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的错误提示的更多相关文章

  1. Django用户名密码错误提示

    from django.shortcuts import render # Create your views here. from django.shortcuts import render fr ...

  2. 第三百八十五节,Django+Xadmin打造上线标准的在线教育平台—登录功能实现,回填数据以及错误提示html

    第三百八十五节,Django+Xadmin打造上线标准的在线教育平台—登录功能实现 1,配置登录路由 from django.conf.urls import url, include # 导入dja ...

  3. python django(forms组件)

    forms组件最大的作用,就是做数据校验. 普通做法,一个一个写校验规则,没有解耦.校验规则,都在视图函数里面. 网页校验 修改urls.py,增加路径addbook from app01 impor ...

  4. django forms的常用命令及方法(二)

    根据别人网上发布,个人爱好收集 1.创建Form类 from django.forms import Form from django.forms import widgets from django ...

  5. Django forms 关于select和checkbox设置初始选中值及让前端选中指定值

    Django的forms和models一样很牛逼.他有两种功能,一是生成form表单,还有就是form表单的验证. 这里主要说一下生成form表单时经常用到的需要设置 初始值 / 默认值 的情况. 1 ...

  6. Django forms 关于select和checkbox设置初始选中值

    Django的forms和models一样很牛逼.他有两种功能,一是生成form表单,还有就是form表单的验证. 这里主要说一下生成form表单时经常用到的需要设置 初始值 / 默认值 的情况. 1 ...

  7. Django Forms 表单

    环境 python 3.7 服务端  views.py from django import forms # 引入 froms 模块 from django.forms import widgets ...

  8. django ---forms组件

    forms组件 本文目录 1 校验字段功能 2 渲染标签功能 3 渲染错误信息功能 4 组件的参数配置 5 局部钩子 6 全局钩子 回到目录 1 校验字段功能 针对一个实例:注册用户讲解. 模型:mo ...

  9. Django Forms实例

    # Django的Form主要具有一下几大功能: # # 生成HTML标签 # 验证用户数据(显示错误信息) # HTML Form提交保留上次提交数据 # 初始化页面显示内容 # forms组件生成 ...

随机推荐

  1. windows添加“以管理员身份运行”

    方法: 新建一个txt文件,命名为"admin.txt",记得打开"显示后缀名",要求看到.txt并可修改之. 将下列代码粘贴进去. Windows Regis ...

  2. [C语言]小知识点 持续更新

    2019-11-24 1.如果输入: printf(,)); 会得到0: 这和我们的日常判断不相符! 然而,改成: printf(,)); 就可以成功输出“2”: 因此,注意pow函数返回的是浮点数, ...

  3. SUPPA 可变剪切分析

      SUPPA是一款通过转录本定量来获取可变剪切定量结果的软件.转录本的定量方式有很多,例如count,FPKM, TPM等,作者建议使用TPM,因为先均一化了基因的长度,然后均一化了测序的深度.同时 ...

  4. PHP 与操作判断奇偶

    /** * 判断奇偶数 * @param $n * @return int */ function isOdd($n){ // $a & $b And(按位与) 将把 $a 和 $b 中都为 ...

  5. LeetCode 896. 单调数列(Monotonic Array)

    896. 单调数列 896. Monotonic Array 题目描述 如果数组是单调递增或单调递减的,那么它是单调的. 如果对于所有 i<=j,A[i]<=A[j],那么数组 A 是单调 ...

  6. 对比JPA 和Hibernate 和 Mybatis的区别

    1.JPA.Hibernate.Mybatis简单了解 1.JPA:本身是一种ORM规范,不是ORM框架.由各大ORM框架提供实现. 2.Hibernate:目前最流行的ORM框架,设计灵巧,文档丰富 ...

  7. HCIA SWITCHING&ROUTTING 笔记——第一章 TCP/IP基础知识(2)

    视频地址:https://ilearningx.huawei.com/courses/course-v1:HuaweiX+EBGTC00000336+Self-paced/courseware/abb ...

  8. Python中turtle库的使用

    Turtle图形库 Turtle库是Python内置的图形化模块,属于标准库之一,位于Python安装目录的lib文件夹下,常用函数有以下几种: 画笔控制函数 penup():抬起画笔: pendow ...

  9. Visual Web Developer 2012安裝教程

    1.打开网页链接http://www.w3school.com.cn/aspnet/mvc_intro.asp 点击Visual Web Developer 2012进行安装安装平台(WebPlatf ...

  10. 从零开始搭建vue移动端项目到上线

    先来看一波效果图 初始化项目 1.在安装了node.js的前提下,使用以下命令 npm install --g vue-cli 2.在将要构建项目的目录下 vue init webpack mypro ...