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组件生成 ...
随机推荐
- Image Perimeters
Description 给出一张由"x"和"."组成的矩阵.每个"x"可以向上下左右及两个斜对角进行连通,请问由某个点开始的"x& ...
- PHP,Excel导出换行
// 有id,才算真的有发票数据 if ($v['b_invoice_id']) { $v['b_invoice_info'] = json_decode($v['b_invoice_json'],t ...
- 判断List集合为空还是null的正确打开方式
事故场景还原 最近在写一个项目的时候遇到一个这样一个问题,我简单的还原一下场景,这是模拟一个简单的管理系统 ① 一张简单的客户表 CREATE TABLE customer( id INT(11) N ...
- urls 视图层
urls.py 路由层 路由与视图函数对应关系 >>> 路由层 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射 ...
- ps -ef|grep详解 、kill与kill -9的区别
ps -ef|grep详解 ps命令将某个进程显示出来 grep命令是查找 中间的|是管道命令 是指ps命令与grep同时执行 PS是LINUX下最常用的也是非常强大的进程查看命令 grep命令是查找 ...
- 以php中的自增自自减运算符操作(整型,浮点型,字符串型,布尔型,空类型)数据
// 环境 // // php版本 // PHP 7.0.33-0+deb9u1 (cli) (built: Dec 7 2018 11:36:49) ( NTS ) // Copyright (c) ...
- 随记sqlserver学习笔记(一)
create database testuse test --部门表create table department( dept_id int not null identity primary key ...
- 二十二、DMA驱动
一.DMA简介 DMA(Direct Memory Access,直接内存存取),DMA传输将数据从一个地址空间复制到另外一个地址空间.传输过程由DMA控制器独立完成,它并没有拖延CPU的工作,可以让 ...
- jmeter保存返回数据到csv
添加一个线程组,然后右键选择“正则表达式提取器” 配置正则表达式: 添加添加后置处理器beanshell postprocessor: 保存提取的数据: 代码: FileWriter fstream ...
- 在论坛中出现的比较难的sql问题:32(row_number函数+子查询 sql循环取差值)
原文:在论坛中出现的比较难的sql问题:32(row_number函数+子查询 sql循环取差值) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. sql循环取差值,该怎 ...