from django.shortcuts import render,HttpResponse
# Create your views here.
from django import forms
class Login_Form(forms.Form):
# 与前台名称一致的用户名字段,Django内置的普通str验证方法,增加验证最小长度为3
user=forms.CharField(min_length=3,error_messages={'required':'用户名不能为空','min_length':'用户名长度不能小于3'})
# django内置的Email验证方法
email=forms.EmailField(error_messages={'required':'用户名不能为空','invalid':'邮箱格式有误'})
def login(req):
if req.method=='GET':
obj_login_form=Login_Form()
return render(req,'login.html',{'obj_login_form':obj_login_form})
elif req.method=='POST':
# 将表单数据放入Login_Form中
obj_login_form=Login_Form(req.POST)
# 通过is_valid()方法验证,返回是否有错误信息
if obj_login_form.is_valid():
# 当验证通过后打印通过的数据
print(obj_login_form.clean())
else:
# 打印验证失败的错误信息
print(obj_login_form.errors.as_json())
return render(req,'login.html',{'obj_login_form':obj_login_form})
import json
def ajax_login(req):
if req.method == 'GET':
return render(req, 'login_js.html')
elif req.method == 'POST':
error_list={'status':True,'errors':None}
# 将表单数据放入Login_Form中
obj_login_form = Login_Form(req.POST)
# 通过is_valid()方法验证,返回是否有错误信息
if obj_login_form.is_valid():
# 当验证通过后打印通过的数据
print(obj_login_form.clean())
else:
error_list['status']=False
# 将错误信息转换为json格式
error_list['errors']=obj_login_form.errors.as_data()
print(type(error_list['errors']),error_list['errors']) #error_list['errors']['email']
print(type(error_list['errors']['email']),error_list['errors']['email'])#<class 'list'> [ValidationError(['用户名不能为空'])]
print(type(error_list['errors']['email'][0]),error_list['errors']['email'][0])#<class 'django.core.exceptions.ValidationError'> ['用户名不能为空']
# 将返回到前台的数据转换为json
return HttpResponse(json.dumps(error_list,cls=error_json_encoder))
from django.core.exceptions import ValidationError
class error_json_encoder(json.JSONEncoder):
def default(self, o):
if isinstance(o,ValidationError):
# 如果是ValidationError类型,则将其转换为字典
return {'code':o.code,'message':o.message}
else:
# 如果不是则调用父类方法
return super(error_json_encoder,self).default(self,o)
没有合适的资源?快使用搜索试试~ 我知道了~
Django之Form表单验证及Ajax验证方式汇总
共3个文件
html:2个
py:1个
需积分: 32 18 下载量 123 浏览量
2018-10-15
21:53:42
上传
评论
收藏 2KB ZIP 举报
温馨提示
源码包括: 1、django的原生Form表单数据验证。 2、Ajax方式的Form表单数据验证
资源推荐
资源详情
资源评论
收起资源包目录
Form及Ajax表单验证验证.zip (3个子文件)
login_js.html 1KB
views.py 3KB
login.html 680B
共 3 条
- 1
资源评论
baobao267
- 粉丝: 21
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功