django表单

时光怂恿深爱的人放手 提交于 2020-02-06 16:10:49

作用:

  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>

     

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!