码迷,mamicode.com
首页 > 编程语言 > 详细

doraemon的python form组件(国庆大更新)

时间:2019-10-09 00:17:22      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:ini   全局   视图   message   字典   规则   初始   return   print   

### 11.12 form组件

form组件的功能:

1. 生产input标签
2. 对提交的数据进行校验
3. 提供错误提示



定义form组件

```python
from django import forms

class RegForm(forms.Form):
    username = forms.CharField()
    pwd = forms.CharField()
```



使用的流程

视图

```python
form_obj = RegForm()
form_obj = RegForm(request.POST)
form_obj.is_valid():  #对数据进行校验
    print(form_obj.cleaned_data)  #通过检验的数据
    return render(request,regs.html,{form_obj:form_obj})
```

模板

```html
{{form_obj.as_p}}   ----> 生产一个个p标签 input label
{{form_obj.errors}}    ----->form表单中所有字节的错误
{{form_obj.username}}    ----->一个字段对应的input框
{{form_obj.username.label}}  ---》该字段的中文提示
{{form_obj.username.id_for_label}}   ----->该字段的input框的id
{{form_obj.username.errors}} ---->给字段的所有错误
{{form_obj.username.errors.0}}   ---->该字段的第一个错误
```

常用字段

```python
CharField    
ChoiceField 
MultipleChoiceField  
```

字段参数

```python
required=True        是否允许为空
widget=None            html插件
label=None            用于生成label的标签或者显示内容
initial = None       初始值
error_message=None     错误信息 {required:不能为空invalid:格式错误}
validators=[函数名]   自定义验证规则
disabled=False         是否可以编辑
```



验证

1.内置验证

```python
required=True
min_length
max_length
```

2.自定义校验器:

?    1.写函数

```python
def checkname(value):
    #通过校验规则 不做任何操作
    #不通过校验规则 抛出异常
    if liujia in value:
        raise ValidationError(不合格我的想法)
```

?    2.使用内置的检器

```python
from django.core.validators import RegexValidator
```

3.钩子函数

?    1.局部钩子

```python
def clean_字段名(self):
    # 局部钩子
    # 通过校验规则  必须返回当前字段的值
    # 不通过校验规则   抛出异常
    raise ValidationError(不符合社会主义核心价值观)
```

?    2.全局钩子

```python
def clean(self):
    # 全局钩子
    # 通过校验规则  必须返回当前所有字段的值
    # 不通过校验规则   抛出异常   ‘__all__‘
    pass
```

is_valid的流程:

1.执行full_clean()的方法:

定义错误字典

定义存放清洗数据的字典

2.执行_clean_fields方法:

?    循环所有的字段

?    获取当前的值

?    对进行校验 ( 内置校验规则   自定义校验器)

1. 通过校验

   self.cleaned_data[name] = value 

   如果有局部钩子,执行进行校验:

   通过校验——》 self.cleaned_data[name] = value 

   不通过校验——》     self._errors  添加当前字段的错误 并且 self.cleaned_data中当前字段的值删除掉

   2. 没有通过校验

   self._errors  添加当前字段的错误

3.执行全局钩子clean方法

 

doraemon的python form组件(国庆大更新)

标签:ini   全局   视图   message   字典   规则   初始   return   print   

原文地址:https://www.cnblogs.com/doraemon548542/p/11638571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!