博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django之form表单验证
阅读量:5934 次
发布时间:2019-06-19

本文共 5812 字,大约阅读时间需要 19 分钟。

django中的Form一般有两种功能:

  • 输入html
  • 验证用户输入
#!/usr/bin/env python# -*- coding:utf-8 -*-import refrom django import formsfrom django.core.exceptions import ValidationErrordef mobile_validate(value):    mobile_re = re.compile(r'^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$')    if not mobile_re.match(value):        raise ValidationError('手机号码格式错误')class PublishForm(forms.Form):    # # user_type_choice = (    #     (0, u'普通用户'),    #     (1, u'高级用户'),    # )    user_type_choice = models.BookType.objects.values_list('id','caption')    user_type = forms.IntegerField(widget=forms.widgets.Select(choices=user_type_choice,                                                                  attrs={
'class': "form-control"})) title = forms.CharField(max_length=20, min_length=5, error_messages={
'required': u'标题不能为空', 'min_length': u'标题最少为5个字符', 'max_length': u'标题最多为20个字符'}, widget=forms.TextInput(attrs={
'class': "form-control", 'placeholder': u'标题5-20个字符'})) memo = forms.CharField(required=False, max_length=256, widget=forms.widgets.Textarea(attrs={
'class': "form-control no-radius", 'placeholder': u'详细描述', 'rows': 3})) phone = forms.CharField(validators=[mobile_validate, ], error_messages={
'required': u'手机不能为空'}, widget=forms.TextInput(attrs={
'class': "form-control", 'placeholder': u'手机号码'})) email = forms.EmailField(required=False, error_messages={
'required': u'邮箱不能为空','invalid': u'邮箱格式错误'}, widget=forms.TextInput(attrs={
'class': "form-control", 'placeholder': u'邮箱'}))
form表单验证属性常用写法大全

 

def publish(request):    ret = {
'status': False, 'data': '', 'error': '', 'summary': ''} if request.method == 'POST': request_form = PublishForm(request.POST) if request_form.is_valid(): request_dict = request_form.clean() print request_dict ret['status'] = True else: error_msg = request_form.errors.as_json() ret['error'] = json.loads(error_msg) return HttpResponse(json.dumps(ret))
View Code

 

 

#!/usr/bin/env python# -*- coding:utf-8 -*-from django import formsfrom app_from import modelsclass Form1(forms.Form):    user = forms.CharField(        widget=forms.TextInput(attrs={'class': 'c1'}),        error_messages={'required': '用户名不能为空'},)    pwd = forms.CharField(max_length=4,min_length=2)    email = forms.EmailField(error_messages={'required': '邮箱不能为空', 'invalid': '邮箱格式错误'})    memo = forms.CharField(        widget=forms.Textarea()    )    # user_type_choice = (    #     (0, '普通用户'),    #     (1, '高级用户'),    # )    user_type_choice = models.BookType.objects.values_list('id','caption')    book_type = forms.CharField(        widget=forms.widgets.Select(choices=user_type_choice,attrs={'class': "form-control"}))    def __init__(self,*args, **kwargs):        """        这么写的目的是为了在更新数据库的时候每次都会执行这个方法        :param args:         :param kwargs:         """        super(Form1, self).__init__(*args, **kwargs)        self.fields['book_type'] =  forms.CharField(            widget=forms.widgets.Select(choices=models.BookType.objects.values_list('id','caption'),attrs={'class': "form-control"}))

 加了验证码的表单验证

 

下载这两个文件请点击--》

 

 

from django.shortcuts import render,HttpResponse,HttpResponseRedirect# Create your views here.from app01.forms import Form1import iofrom check_code import check_codedef check_coder(request):    mstream = io.BytesIO()    img, code = check_code.create_validate_code()    img.save(mstream,'GIF')    request.session["CheckCode"] = code    # print(mstream.getvalue())    return HttpResponse(mstream.getvalue())def login(request):    if request.method == 'POST':        print("aaa")        f = Form1(request.POST)        if f.is_valid():            code_sess = request.session.get('CheckCode',None)            """            思路:首先获取session,然后获取验证码的内容,全部大写            """            code = f.cleaned_data['check_code']            user = f.cleaned_data['user']            print(code_sess,code)            if code.upper() == code_sess.upper():                print("验证码正确")                print(code,user)                return HttpResponseRedirect('/index/')        else:            print('bb')            print(f.errors)            return render(request,'login.html',{
'error':f.errors,"ccc":"或者验证码错误",'form':f}) else: f = Form1() return render(request,'login.html',{
'form':f})
views

 

#!/usr/bin/env python# -*- coding:utf-8 -*-from django import forms# from app_from import modelsclass Form1(forms.Form):    user = forms.CharField(        widget=forms.TextInput(attrs={
'class': 'c1'}), # error_messages={
'required': '用户名不能为空'}, ) check_code = forms.CharField( label='验证码', max_length=4, error_messages={
'required': u'验证码不能为空', 'invalid': u'验证码不正确'}, )
forms

 

{% extends "temp.html" %}{
% block login %}
{
{form.user}} {
% if error.user.0 %}
{
{error.user.0}}
{
% endif %}
{
{form.check_code}} {
% if error.check_code.0 %}
{
{ ccc }}
{
% endif %}
{
% endblock %}
login.html

 

转载地址:http://ndjtx.baihongyu.com/

你可能感兴趣的文章
wordpress网站需要ftp更新解决办法
查看>>
如何用Python爬网站数据,并用BI可视化分析?
查看>>
这么多机器学习的应用场景,金融领域到底有何不同?
查看>>
零售数字化必经哪四个阶段?
查看>>
Redis缓存穿透、缓存雪崩、redis并发问题分析
查看>>
让转型自动化测试不是空喊!怎么转型自动化测试?
查看>>
了解国产***冰河2.2 加强网络安全意识
查看>>
jQuery操作数组函数
查看>>
Hive中的所有Join
查看>>
CM cluster 之间trunk
查看>>
SqlServer系列笔记——字符串函数
查看>>
军哥讲IE之道,如何考取IE的第一步:笔试
查看>>
SVN源码服务器搭建-详细教程
查看>>
SSL/TLS协议运行机制的概述
查看>>
openstack Nova、Cinder、Neutron资源配额设置
查看>>
三种备份方式的区别
查看>>
创建 OVS flat network - 每天5分钟玩转 OpenStack(134)
查看>>
我的友情链接
查看>>
linux 常用基本命令之 touch cp file rm mv cat 的介绍与使用
查看>>
Ext.grid.gridpanel
查看>>