zoukankan      html  css  js  c++  java
  • django基础——使用django form校验数据

    一、django自带框架进行数据校验:form

    1.例如:我们先建一个student的表,moduels.py:

    class  Student(models.Model):
        name = models.CharField(verbose_name='名称',max_length=10)
        phone = models.CharField(max_length=11,unique=True,verbose_name='手机号')
        money = models.FloatField(verbose_name='',default=0,null=True)
    
        class Meta:
            verbose_name = '学生表'
            verbose_name_plural = verbose_name
            db_table = 'student'
        def __str__(self):
            return self.name

    2.字段校验,forms.CharField可以通过,定义的属性来检验数据,也可以自定义函数,def clean_字段名:来自定义校验函数,解释及代码如下,views.py:

    from django import forms
    from django.core.exceptions import ValidationError
    class StudentForm(forms.Form):   #需要继承form的类来校验
        name=forms.CharField(min_length=2,max_length=10,required=True)    #根据字段定义的属性 来校验前端输入的内容是否符合这些限制,required=True表示必传
        phone=forms.CharField(min_length=11,max_length=11)
        money=forms.FloatField(required=False)   #非必填:required=False,null=True:更改表结构,可为空
        def clean_phone(self):  #自定义校验函数,比如校验字段值重复。def clean_需要校验的字段名,固定格式。这里是校验了phone这个字段,这样在校验了上边写的字段属性外,还会校验这个函数。
        
    '''钩子'''
           phone=self.cleaned_data['phone']
            if models.Student.objects.filter(phone=phone):#在form的基础上增加校验,
                raise ValidationError("手机号已经存在")  #django校验异常
                # return self.errors.add('手机号错误','手机号已经存在')
            return phone

    3.把前端传来的数据,校验后,写进数据库,views.py

    def student(request):
        stu_form=StudentForm(request.POST) #request.POST拿到前端传的数据
        if stu_form.is_valid():   #根据实例的类中的属性 判断是否符合条件。is_valid()是自动校验字段是否符合限制的方法,符合限制返回True,不符合限制返回False
            cleand_data=stu_form.cleaned_data     #stu_form.cleaned_data,获取校验通过的数据,字典类型
            models.Student.objects.create(**cleand_data)  #插入已经校验通过的数据,通过解包字典转换成key=value的方式
            data={'msg':'成功'}
        else:
            print(stu_form.errors.get_json_data)   #获取错误信息,返回不符合限制的字段是哪些,以及不符合的原因。stu_form.errors返回的是html的。通过get_json_data返回字典类型
            data={'msg':'校验失败'}
        return HttpResponse(json.dumps(cleand_data,ensure_ascii=False))   #返回字符串用httpresponse返回
  • 相关阅读:
    bat %n 判断传入的参数值和使用注意
    git ls-remote url,判断 url 是否存在
    bat 读取 ini 文件
    bat 提示窗口,带换行
    python .pth 文件 和 site 模块
    python Pillow 图片处理模块,好强大有没有
    Python 获取 exe 的 icon 并且保存
    git 判断路径是否是 git 仓库
    Python 去除字符串中的空行
    Android平台程序崩溃的类型及原因列举
  • 原文地址:https://www.cnblogs.com/hancece/p/11738381.html
Copyright © 2011-2022 走看看