django表单 用表单验证数据是否合法

作用:

  1.  渲染表单模板。
  2. 表单验证数据是否合法。

django中表单使用流程:

  1.    像模版一样。首先我们要先定义一个表单类,继承自django.forms.Form。
    #新建一个forms.py.
    from
    django import forms class MessageBoarForm(forms.Form): title = forms.CharField(max_length=100,min_length=2,label='标题',error_messages={'min_lenth':'至少要写一个字符'}) content = forms.CharField(widget=forms.Textarea,label='内容') email = forms.EmailField(label='邮箱') reply = forms.BooleanField(required=False,label='是否回复') #label时定义网页上显示的内容,error_messages是定义如果输入错误后提示的内容
  2. 接下来就是在view视图里,根据get或post请求操作。
    from django.shortcuts import render
    from django.shortcuts import HttpResponse
    from django.views.generic import View
    from .forms import MessageBoarForm
    from django.forms.utils import ErrorDict
    # Create your views here.
    
    class IndexView(View):
        def get(self,request):
            form = MessageBoarForm() #获取表单内容 需引入
            return render(request,'index.html',context={
                'form':form
            })
        def post(self,request):
            form = MessageBoarForm(request.POST)
            if form.is_valid():     #用post方法在网页上输入内容  提交时
                title = form.cleaned_data.get('title')    #clean_data用来获取验证成功后(合法)的
                content= form.cleaned_data.get('content')
                email = form.cleaned_data.get('email')
                reply = form.cleaned_data.get('reply')
                print('$'*30)
                print(title)
                print(content)
                print(email)
                print(reply)
                return HttpResponse('success')
            else:             #如果不符合定义的需求,即输入不合法时
                print(form.errors.get_json_data())  #获取输入时所显示的
                return HttpResponse('failed')
  3. 在使用GET请求时,我们传递了一个form模板,那么以后就可以使用form来生成一个表单的html代码,使用post请求时,我们根据前端上传来的数据,构建了一个表单,来验证是否合法,如果通过我们可以用clean_data来获取相应的数据。
    <form action="" method="post">
        <table>                 # table用来美化模板 #}
            {{ form.as_table }}   {# form表单里所定义的内容 #}
            <tr>
                <td></td>
                <td><input type="submit" value="提交"></td>
            </tr>
        </table>
    </form>

用表单验证数据是否合法:

1.CharField:(用来接收文本)

  • 参数:
  1. max_length:这个字段的最大长度。
  2. min_length:这个字段的最小长度。
  3. required:这个字段是否为必须的,默认为是
  4. error_messages:再某个条件验证失败时给的错误信息

2.EmailField(用来接受邮件,会自动验证邮件是否合法)

from django import forms
class MyForm(forms.Form):
    email = forms.EmailField(error_messages={"invalid":"请输入正确的邮箱"})

视图里写:

class IndexView(View):
    def get(self,request):
        return render(request,'index.html')
    def post(self,request):
        form = MyForm(request.POST)
        if form.is_valid():
            form = form.cleaned_data.get('email')
            return HttpResponse('success')
        else:
            print(form.errors.get_json_data)
            return HttpResponse('shibai')

3.FloatField(接受浮点类型)

  • 参数
  1. max_value:最大的值
  2. min_value:最小的值
  3. error_messages:验证失败显示的信息。

4.IntegerField(接收整形,并且验证通过后,会将这个字段的值转换成整型。)

  • 参数
  1. max_value:最大的值
  2. min_value:最小的值。

5.URLField:(接收url格式的字符串)

原文地址:https://www.cnblogs.com/nihao2/p/12268574.html