码迷,mamicode.com
首页 > 其他好文 > 详细

Django框架 之 form组件的钩子

时间:2018-08-31 21:22:17      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:ble   contain   利用   index   ror   对象   规则   嵌套   eth   

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()
    return render(request,"register.html",{"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组件的钩子

标签:ble   contain   利用   index   ror   对象   规则   嵌套   eth   

原文地址:https://www.cnblogs.com/hanbowen/p/9567450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
分享档案
周排行
mamicode.com排行更多图片
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!