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('非法请求!')  # 返回提交结果到页面

项目截图:

标签:Django
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号