Django2 表单验证功能
你猜
阅读:626
2021-03-31 18:16:15
评论:0
本文实例:实现自定义表单的验证功能。
第一步:在应用模块创建自定义表单(forms.py)文件。
第二步:自定义验证表单必须继承 (forms.ModelForm)
第三步:在应用模块的views.py 调用相关自定义表单的is_valid方法,触发自定义表单的clean方法,实现自定义表单的验证。
示例:
1、在from.py 文件中,编写如下代码,注意:我这里是没有编写clean 方法
from django import forms
from .models import Comment
class CommentForm(forms.ModelForm): #继承自定义表单父类forms.ModelForm
class Meta:
model = Comment #绑定数据模型
fields = ['name', 'email', 'content'] # 需要呈现在页面上的表单元素
widgets = { # 定义字段对应的表单元素以及属性
'name': forms.TextInput(attrs={'id': 'name', 'class': 'form-control', 'placeholder': '请输入昵称'}),
'email': forms.EmailInput(attrs={'id': 'email', 'class': 'form-control', 'placeholder': '请输入邮箱'}),
'content': forms.Textarea(attrs={'id': 'content', 'class': 'form-control', 'placeholder': '请输入评论内容'}),
}
2、在views.py文件中,调用相关自定义表单。
from .forms import * #引入自定义表单
def pub_comment(request): # 发布评论函数
if request.method == 'POST': # 如果是post请求
request.session['name'] = request.POST.get('name') # 将请求中的昵称存入session
request.session['email'] = request.POST.get('email') # 将请求中的邮箱存入session
comment = Comment() # 创建评论对象
comment.article = Article.objects.get(id=request.POST.get('article')) # 设置评论所属的文章
if request.POST.get('reply') != '0': # 如果回复的不是文章而是他人评论
comment.reply = Comment.objects.get(id=request.POST.get('reply')) # 设置回复的目标评论
form = CommentForm(request.POST, instance=comment) # 将用户的输入和评论对象结合为完整的表单数据对象
if form.is_valid(): # 如果表单数据校验有效
try:
form.save() # 将表单数据存入数据库
result = '200' # 提交结果为成功编码
request.session['content'] = '' # 发布成功时session中存储的内容数据为空值
except: # 如果发生异常
result = '100' # 提交结果为失败编码
request.session['content'] = request.POST.get('content') # 发布失败时将请求中的内容存入session
else: # 如果表单数据校验无效
result = '100' # 提交结果为失败编码
return HttpResponse(result) # 返回提交结果到页面
else: # 如果不是post请求
return HttpResponse('非法请求!') # 返回提交结果到页面
项目截图:
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。