Django Forms的错误提示
1、error_messages={}
首先,在构建form表单时,可以用"error_messages={}"自定义错误信息,例如:
# form.py
1 from django import forms # Create your models here.
class TestForm1(forms.Form):
username = forms.CharField(
min_length=3,
max_length=20,
error_messages={'required':'用户名不能为空', # 用户名为空时显示的错误信息
'min_length':'大于3个字符',
'max_length':'小于20个字符'}
)
view.py
1 def login(request):
2 if request.method == 'GET':
3 return render(request, 'login.html')
4
5 elif request.method == 'POST':
8 obj = LoginForms(request.POST)
9 if obj.is_valid():
10 pass
11 else:
12 error = obj.errors
13 return render(request, 'login.html', {'errors': error}) # 以字典的形式发送到前端显示出来
HTML上相对应的部分代码显示
<div class="form-group">
<label for="username">用户名</label>
<input type="text" class="form-control" name="username" id="username" placeholder="请输入用户名">
<p style="color: red;">{{ errors.username.0 }}</p> {#“.0”的作用是在界面显示错误信息时,可以去掉前面的点"·"#}
</div>
2、invalid
我们知道,在定制表单信息的格式时,除了可以自定义外,Django内部给我们备好的,例如可以用Django内部帮我们定义好的slug
from django.core import validators
class TextForm(forms.Form):
# slug指有效URL的一部分,能使URL更加清晰易懂
slug = forms.CharField(validators=[validators.validate_slug],
error_messages={'required':'不能为空' })
如果格式错误,则错误信息显示为"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
那么如何自定义错误信息,让它在格式错误时显示我们自己定义的内容呢?通过查看该函数源码,我们可以发现内定的格式错误信息是由"invalid"这个参数规定的
1 # https://docs.djangoproject.com/zh-hans/2.1/_modules/django/core/validators/#RegexValidator
2 slug_re = _lazy_re_compile(r'^[-a-zA-Z0-9_]+\Z')
3 validate_slug = RegexValidator(
4 slug_re,
5 # Translators: "letters" means latin letters: a-z and A-Z.
6 _("Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."),
7 'invalid'
8 )
那么,我们就可以在"error_messages={}"里写上
slug = forms.CharField(validators=[validators.validate_slug], error_messages={'required':'不能为空',
'invalid':'输入由字母,数字,下划线或连字符组成的有效“slug”'})
这样,当格式错误时,显示的错误信息就是我们自己自定义的
3、ValidationError
当填入在表单上的信息全部符合格式,但是还可能存在一种错误情况,例如注册用户时,用户名重复的情况,这时格式通过表单的信息验证,但是却不符合我们自己对于注册格式的定义时,怎么把错误信息显示出来??这就要用到“ValidationError”
form.py from django.core.exceptions import ValidationError class LoginForms(BaseForm, forms.Form):
username = forms.CharField()
# 钩子函数
def clean_username(self):
username = self.request.POST.get('username')
is_exsit = models.UserInfo.objects.filter(username=username) # 去数据库查找用户名是否已存在
if is_exsit:
raise ValidationError(message='用户名已存在', code='invalid')
Django Forms的错误提示的更多相关文章
- Django用户名密码错误提示
from django.shortcuts import render # Create your views here. from django.shortcuts import render fr ...
- 第三百八十五节,Django+Xadmin打造上线标准的在线教育平台—登录功能实现,回填数据以及错误提示html
第三百八十五节,Django+Xadmin打造上线标准的在线教育平台—登录功能实现 1,配置登录路由 from django.conf.urls import url, include # 导入dja ...
- python django(forms组件)
forms组件最大的作用,就是做数据校验. 普通做法,一个一个写校验规则,没有解耦.校验规则,都在视图函数里面. 网页校验 修改urls.py,增加路径addbook from app01 impor ...
- django forms的常用命令及方法(二)
根据别人网上发布,个人爱好收集 1.创建Form类 from django.forms import Form from django.forms import widgets from django ...
- Django forms 关于select和checkbox设置初始选中值及让前端选中指定值
Django的forms和models一样很牛逼.他有两种功能,一是生成form表单,还有就是form表单的验证. 这里主要说一下生成form表单时经常用到的需要设置 初始值 / 默认值 的情况. 1 ...
- Django forms 关于select和checkbox设置初始选中值
Django的forms和models一样很牛逼.他有两种功能,一是生成form表单,还有就是form表单的验证. 这里主要说一下生成form表单时经常用到的需要设置 初始值 / 默认值 的情况. 1 ...
- Django Forms 表单
环境 python 3.7 服务端 views.py from django import forms # 引入 froms 模块 from django.forms import widgets ...
- django ---forms组件
forms组件 本文目录 1 校验字段功能 2 渲染标签功能 3 渲染错误信息功能 4 组件的参数配置 5 局部钩子 6 全局钩子 回到目录 1 校验字段功能 针对一个实例:注册用户讲解. 模型:mo ...
- Django Forms实例
# Django的Form主要具有一下几大功能: # # 生成HTML标签 # 验证用户数据(显示错误信息) # HTML Form提交保留上次提交数据 # 初始化页面显示内容 # forms组件生成 ...
随机推荐
- [转帖]AMD三代锐龙线程撕裂者命名曝光:24核心3960X
AMD三代锐龙线程撕裂者命名曝光:24核心3960X https://www.cnbeta.com/articles/tech/900271.htm 一直搞不懂TDP啥意思 可能会高于TDP的功率.. ...
- lnmp+tp5安装纪要
1: lnmp : https://lnmp.org/install.html 官网安装帮助 运行命令:wget http://soft.vpser.net/lnmp/lnmp1.6.tar.gz ...
- @Scheduled注解各参数详解
@Scheduled注解各参数详解 @Scheduled注解的使用可以参考这个:https://www.cnblogs.com/mengw/p/11564338.html 参数详解 1. cron 该 ...
- 多进程实现并发服务器(TCP)
前提:基于Linux系统的学习 /*多进程实现并发服务器 父进程任务 1.从未决连接队列中取出请求,建立和客户端的连接,cfd 2.创建子进程 3.close(cfd) 4.负责子进程的收尸工作 子进 ...
- c++实现的顺序栈
栈是一种运算受限的线性表,是一种先进后出的数据结构,限定只能在一端进行插入和删除操作,允许操作的一端称为栈顶,不允许操作的称为栈底 因此需要的成员变量如下 int *_stack; //指向申请的空间 ...
- dotnet Core学习之旅(序)
.NET Core 新玩具,新工具,新生产力 我将在博客园我从0.1开始探索.NET Core 的过程. 为什么是从0.1开始而不是从0开始 我在微软刚宣布开源的时候便接触到了.NET Core 1. ...
- ALV报表——选择屏幕变量赋值
ABAP选择屏幕变量赋值 运行效果: 代码: *&---------------------------------------------------------------------* ...
- 怎样检测浏览器是否安装了某个插件, 比如flash
首先, 我们可以获取浏览器安装的所有在插件: navigator.plugins 它会返回一个类似数组的对象, 包含所有已安装插件的具体信息. navigator.plugins; 然后我们可以通过正 ...
- Centos7+puppet+foreman,实现部署OS
一.简介 1. 需要实现操作系统的部署 foreman提供了一个基于kickstart的部署工具,输入一台服务器的部署网卡的mac地址和hostname.ip等信息,就能自动的帮我们部署完,并且,还可 ...
- Golang安装和配置
Golang安装和配置 Linux Golang 下载源码,解压. # /home/superpika为你的主目录 mkdir /home/superpika/go mkdir /home/super ...