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

 

posted on 2018-11-19 19:05  你说我记  阅读(151)  评论(0编辑  收藏  举报

导航