119.用表单验证数据是否合法
常用的Field:
使用Field是对数据进行验证的第一步。想要得到什么样的数据就定义什么样的Field。
但是在实际的开发当中,因为使用django中的表单会增加前端和后端的diamante的耦合性,所以一般不会使用django表单,而是在前端写好了表单之后,在django中使用表单进行验证。
1.CharField:用来接收文本。常用参数:
max_length: 最大长度。
min_length: 最小长度。
error_messages: 在某个字段验证失败的时候,给出相应的错误信息。
required: 这个字段是否是必须被传入的,默认为True。
labels: 字段在浏览器中进行显示的时候的名字。
2.EmailField: 用来接收邮箱字段,会自动验证是否合法。
错误信息的key: required, invalid。
3.FloatField:
用来接收浮点类型的数据,经过验证之后,会将数据转换为浮点类型。
max_value: 最大值。
min_value: 最小值。
错误信息的key:required, invalid,max_value, min_value。
forms.py
from django import forms
class MessageBoard(forms.Form):
<!--此时如果输入了一个不能转化为浮点类型的数值的话,就会报错-->
price = forms.FloatField(error_messages={'invalid':'请输入正确的浮点型数值', 'required':'请一定要输入该字段的值'})
views.py:
from django.views import View
from django.http import HttpResponse
from django.shortcuts import render, redirect, reverse
class MessageBoard(View):
def get(self, request):
return render(request, 'index.html')
def post(self, request):
<!--实例化这样的一个form对象-->
form = MessageBoard(request.POST)
<!--判断form是否符合要求-->
if form.is_valid():
price = form.cleaned_datda.get('price')
<!--此时采用cleaned_data获取的数据如果是符合要求的is_valid(),就会转化为浮点型数据。-->
return HttpResponse('success!')
else:
<!--打印出错误信息,按字典类型输出-->
print(form.errors.get_json_data())
return HttpResponse('fail')
4.IntegerField: 用来验证数据是否为整型,验证过后会将这个字段的值转换为整型。
max_value:最大值。
min_value:最小值。
错误信息key: required, invalid,max_value,min_value。
5.URLField:用来接收url格式的字符串。
错误信息key:required,invalid。
person_website = forms.URLField(error_messages={'invalid':'请输入正确格式的个人网址!','required':'一定要输入网址'})
(1)在浏览器中输入http://guadn.com/,就可以正常访问。在Postman中自定义传入的字段,如果没有传入person_website,就会提示:{'person_website': [{'message': '一定要输入网址', 'code': 'required'}]}。
(2)如果你输入一个guyan.com的话,他也会自动将http://加上,如果你没有定义域名,比如输入“guyan”这样的话,就不能识别它是一个网址了。会提示相应的错误信息:{'person_website': [{'message': '请输入正确格式的个人网址!', 'code': 'invalid'}]}
始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。