python_from组件测试环境

Python console

from app01 import views
from_obj = views.MyForm({'username':'zyb','password':'123','email':'666'})
from_obj.is_valid()
False
from_obj.cleaned_data
{'username': 'zyb', 'password': '123'}\

Python Form钩子函数


from django import forms
from django.core.validators import RegexValidator


class MyForm(forms.Form):

    # username字符串类型最小3位 最大8位
    username = forms.CharField(min_length=3,max_length=8,label='用户名',error_messages={'min_length':'用户名最少三位','required':'用户名不能为空'})
    password = forms.CharField(min_length=3,max_length=8,label='密码')
    confirm_password = forms.CharField(min_length=3,max_length=8,label='密码')
    email = forms.EmailField(label='邮箱',error_messages={'invalid':'邮箱格式不正确','required':'邮箱不能为空'})
    phone = forms.Charfield(validators=[RegexValidator(r'^[0-9]+$','请输入数字'),RegexValidator(r'^[0-9]+$','请输入数字'),····])

    # 钩子函数
    # 局部钩子
    def clean_username(self):
        username = self.cleaned_data.get('username')

        if '666' in username:
            # 提示错误信息
            self.add_error('username','不能含有666')
        # 将钩子函数勾出来的数据再放回去

        return username

    # 全局钩子
    def clean(self):
        password = self.cleaned_data.get('password')
        confirm_password = self.cleaned_data.get('confirm_password')

        if not confirm_password == password:
            self.add_error('confirm_password','两次密码不一致')

        return self.cleaned_data  # 返回所有数据

def index(request):

    form_obj = MyForm()

    if request.method == 'POST':

        form_obj = MyForm(request.POST)

        if form_obj.is_valid():
            return HttpResponse('ok')

    return render(request,'index.html',locals())

forms组件其他参数

label 字段名
error_messsage 自定义报错信息
initial 默认值
required 是否必填
针对不同input修改:widget=forms.widgets.PasswordInput(attrs={'class':'form-control c1 c2','value':'123'})
posted @ 2020-11-16 11:01  zybyekai  阅读(86)  评论(0)    收藏  举报