zoukankan      html  css  js  c++  java
  • 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'}]}
    始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
  • 相关阅读:
    Windows Server 2003服务器.net4.0+IIS6.0的服务器,IE11浏览器访问的不兼容性
    SVN标准目录结构
    关于SVN 目录结构,使用教程
    Visio编辑数据库模型列
    IIS 8.5配置.net网站[花了半个多小时]
    调试存储过程
    generate the next AttestationNumber, 格式是ICD-EPRG-DEV-0000000001,ICD-EPRG-DEV-0000000002
    构建布局良好的Windows程序
    初始window程序
    使用ADO.NET访问数据库查询和操作数据
  • 原文地址:https://www.cnblogs.com/guyan-2020/p/12310561.html
Copyright © 2011-2022 走看看