码迷,mamicode.com
首页 > 其他好文 > 详细

119.用表单验证数据是否合法

时间:2020-02-15 09:37:43      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:pre   float   验证过   要求   site   err   elf   success   信息   

常用的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‘}]}

119.用表单验证数据是否合法

标签:pre   float   验证过   要求   site   err   elf   success   信息   

原文地址:https://www.cnblogs.com/guyan-2020/p/12310561.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!