Django框架 之 form组件的钩子
Posted hanbowen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django框架 之 form组件的钩子相关的知识,希望对你有一定的参考价值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
def foo(request): if request.method = = "POST" : regForm = RegForm(request.POST) if regForm.is_valid(): pass # 可用数据: regForm.cleaned_data, # 将数据插入数据库表中 else : pass # 可用数据: regForm.errors # 可以利用模板渲染讲errors嵌套到页面中返回 # 也可以打包到一个字典中,用于ajax返回 else : regForm = RegForm() ‘‘‘ 实例化时: self.fields={ "username":"字段规则对象", "password":"字段规则对象", } is_valid时: self._errors = {} self.cleaned_data = {} #局部钩子: for name, field in self.fields.items(): try: value = field.clean(value) self.cleaned_data[name] = value if hasattr(self, ‘clean_%s‘ % name): value = getattr(self, ‘clean_%s‘ % name)() self.cleaned_data[name] = value except ValidationError as e: self.add_error(name, e) # 全局钩子: self.clean() # def self.clean():return self.cleaned_data return not self.errors # True或者False ‘‘‘ |
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
from django import forms class LoginForm(forms.Form): username = forms.CharField(label = ‘username‘ , max_length = 100 ) password = forms.CharField(label = ‘password‘ , max_length = 100 ) #钩子函数为对应字段添加判断条件 def clean_username( self ): if len ( self .cleaned_data.get( "username" ))> 5 : print ( self .cleaned_data.get( "password" )) return self .cleaned_data.get( "username" ) def clean_password( self ): pass #全局钩子函数 def clean( self ): if self .cleaned_data[ "password" ] = = self .cleaned_data[ "repeat_password" ]: return self .cleaned_data |
以上是关于Django框架 之 form组件的钩子的主要内容,如果未能解决你的问题,请参考以下文章
Django框架(十四)-- forms组件局部钩子全局钩子
Django---FORM组件.FORM组件的字段,FORM组件校验流程,FORM组件的全局和局部钩子,FORM和Model的组合