django中form的自定义校验
来源:互联网 发布:docker oracle数据库 编辑:程序博客网 时间:2024/04/30 08:52
最近要给学校的邮件写个注册模块,好让已经毕业的学生继续使用学校的邮箱。
在写表单验证的时候出现个问题,django中form并没有提供学号类型的field(好吧,我承认哪个框架都不会提供的),但是我还地用总不能向以前那样在处理数据时做数据校验吧,于是就翻手册,找到三个解决方法,一个是自定义field,一个是使用validators,一个是重写form中和校验相关的方法。我选择了第二种,其实三种方法基本上都是一样的,就是觉得使用validator比较方便。
手册上有这样一段内容:
#A validator is a callable that takes a value and raises a #ValidationError if it doesn’t meet some criteria. Validators can be useful #for re-using validation logic between different types of fields.#For example, here’s a validator that only allows even numbers:from django.core.exceptions import ValidationError def validate_even(value): if value % 2 != 0: raise ValidationError(u’%s is not an even number’ % value)#You can add this to a model field via the field’s validators argument:from django.db import modelsclass MyModel(models.Model): even_field = models.IntegerField(validators=[validate_even])#Because values are converted to Python before validators are run, you can #even use the same validator with forms:from django import formsclass MyForm(forms.Form): even_field = forms.IntegerField(validators=[validate_even])
仿照着手册写了一个校验学号的函数,让后加入到validators中,但是又遇到一个问题,填写的数据正确的时候一切都很正常,一旦发生错误,就提示没有返回HttpResponse对象。正常情况下如果验证失败django就会跳转到填写表单的页面,并打印错误信息,加上自定义的validators后它就不自动跳转了,以前我们可以这样写一个form的校验:
def addUser(request): if request.method == 'POST': f = form(request.POST)#从表单获取数据 if f.is_valid():#校验数据 pass else: pass
使用validators后就只能这样写了:
def addUser(request): if request.method == 'POST': f = form(request.POST)#从表单获取数据 if f.is_valid():#校验数据 pass else: pass else: pass
- django中form的自定义校验
- 【django】表单Form类2-自定义校验规则
- Django 中form的用法
- Django 中form的用法
- django中form的使用
- 自定义Django Form中choicefield下拉菜单选取数据库内容
- Django中Form的Textarea字段
- django中form的CSS样式
- Django中 form表单的使用
- Django中 form表单的使用
- Django中 form表单的使用
- Django中 form表单的使用
- Django Form 自定义字段错误信息
- Django 的 form类
- Django的form表单
- Django中form类排版
- django 中 form 页面显示
- Django 表单校验 表单字段设置 自定义表单校验规则
- Hibernate中outer-join、lazy 、fetch join关键字的使用
- Streams散记之一-如何清除流配置
- 有关京东商城采用.NET架构的社区讨论
- streams流复制ORA-01403错误解决一则
- struts2异常
- django中form的自定义校验
- 优秀的程序员都该知道的15件事
- android---手势识别
- Streams复制的ORA-01341错误解决
- 2011最有希望能源领域发展趋势:城市减少拥堵
- ucos II嵌入式实时操作系统特点概述 .
- Oracle 10g LOGMNR挖掘日志很方便
- my 2011
- oracle GoldenGate学习笔记