django表单 用表单验证数据是否合法
作用:
- 渲染表单模板。
- 表单验证数据是否合法。
django中表单使用流程:
- 像模版一样。首先我们要先定义一个表单类,继承自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是定义如果输入错误后提示的内容 - 接下来就是在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')
- 在使用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:(用来接收文本)
- 参数:
- max_length:这个字段的最大长度。
- min_length:这个字段的最小长度。
- required:这个字段是否为必须的,默认为是
- 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(接受浮点类型)
- 参数
- max_value:最大的值
- min_value:最小的值
- error_messages:验证失败显示的信息。
4.IntegerField(接收整形,并且验证通过后,会将这个字段的值转换成整型。)
- 参数
- max_value:最大的值
- min_value:最小的值。
5.URLField:(接收url格式的字符串)