• Django重新整理3


    Forms组件

    1.在models.py中我们建立一个新的表关系:

    class UserInfo(models.Model):
    
        user=models.CharField(max_length=32)
        pwd=models.CharField(max_length=32)
        email=models.CharField(max_length=32)

    2.进行数据的迁移

    3.路由和视图函数

    4.

    from app01.models import UserInfo
    def reg(request):
        if request.method == "POST":
        form =  UserForm(request.POST)
    #校验数据
            if form.is_valid():
                print(form.cleaned_data)
                UserInfo.objects.create(**form.cleaned_data)
                return HttpResponse("OK")
            else:
                errors=form.errors
                print(form.errors.get('__all__'))
                if form.errors.get("__all__"):
                    g_errors = form.errors.get('__all__')[0]
                return render(request,"reg.html",locals())
    
        else:
            form=UserForm()
            return render(request,"reg.html",locals())
    
    
    
    #在views中直接创建UserForm表
    from django.forms import widgets
    
    class UserForm(forms.Form):
        msg={"required":"该字段不能为空"}
        user=forms.CharField(min_length=5,
                             label="用户名",
                             error_messages=msg,
                             widget=widgets.TextInput(attrs={"class":"form-control"})
                             )
        pwd=forms.CharField(error_messages=msg,
                               label="密码",
                             min_length=5,
                              widget=widgets.PasswordInput(attrs={"class":"form-control"})
                               )
        r_pwd = forms.CharField(error_messages=msg,
                                min_length=5,
                              label="确认密码",
                              widget=widgets.PasswordInput(attrs={"class": "form-control"})
                              )
        email=forms.EmailField(error_messages={"invalid":"邮箱格式错误"},
                               label="邮箱",
                               widget=widgets.EmailInput(attrs={"class":"form-control"})
                               )
    
    #定义钩子
    def clean_user(self): val=self.cleaned_data.get("user") ret=UserInfo.objects.filter(user=val).first() if not ret: return val else: raise ValidationError("用户名已存在!")

    def clean_pwd(self): val=self.cleaned_data.get("pwd") if val.isdigit(): raise ValidationError("密码不能是纯数字!") else: return val
    def clean(self): pwd=self.cleaned_data.get("pwd") r_pwd=self.cleaned_data.get("r_pwd") if pwd and r_pwd: if pwd==r_pwd: return self.cleaned_data else: raise ValidationError("两次密码不一致!") else: return self.cleaned_data
  • 相关阅读:
    【应用】Linux内存调试工具:valgrind
    Python UnboundLocalError: local variable 'xxx' referenced before assignment 解决方法
    MYSQL连接时错误码2059解决办法
    Python encode()、decode()方法详解
    genymotion自动化使用
    论文数据集
    Native Apps、Web Apps和Hybrid Apps
    C# 中如何进行私有(private)函数测试
    Windows10 计划任务开始失败
    如果系统盘后面是恢复盘,如何扩充系统盘
  • 原文地址:https://www.cnblogs.com/lzqrkn/p/9984752.html
Copyright © 2020-2023  润新知