zoukankan      html  css  js  c++  java
  • 九、django通过forms对页面数据校验

    以一个student学生表为例子
    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

    校验代码实现
    views.py
    from django import forms  #校验
    from django.core.exceptions import ValidationError #异常
    
    #写一个校验的类,用于校验数据
    class StudentForm(forms.Form):
        # 校验的类
        name = forms.CharField(min_length=2,max_length=10)
        phone = forms.CharField(min_length=11,max_length=11)
        money = forms.FloatField(required=False)# required=True 必传,默认就是True
        def clean_phone(self):
            '''钩子,自定义校验规则,函数名是clean_字段名 '''
            phone = self.cleaned_data['phone'] #把数据中的phone数据拿过来
            if models.Student.objects.filter(phone=phone):
                raise ValidationError('手机号已存在')
            return phone
    
    #页面的后台函数
    def student(request):
        stu_form = StudentForm(request.POST) #校验的类
        if stu_form.is_valid(): # is_valid如果这是合法的
            print('cleaned_data',stu_form.cleaned_data)
            models.Student.objects.create(**stu_form.cleaned_data)
            data = {"msg":"成功"}
        else:
            print('errors',stu_form.errors.get_json_data())
            data = {"msg":"校验失败"}
        return HttpResponse(json.dumps(data,ensure_ascii=False))
    
    
  • 相关阅读:
    javascript 注意事项汇总
    Object.prototype.toString方法
    PHPStorm使用心得
    JavaScript基于原型链的继承
    PHP重定向的3种方式
    Android应用与开发环境
    PHP时间处理
    cocos2dxna 游戏中如何控制后退键实现目的性跳转
    wp7 独立存储空间在真机和虚拟机测试的时候数据不一样
    c#获取交叉数组的行、列数
  • 原文地址:https://www.cnblogs.com/yanyan-/p/11744126.html
Copyright © 2011-2022 走看看