form组件的总结

1、form组件(******)                 
                  局部钩子
                  全局钩子
                   '''
                    实例化时:

                        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
                    '''
                    使用组件:
                    
                            form.py
                            
                                  class LoginForm(forms.Form):
                                       username=forms.CharField()
                                                    
                            views.py:
                                  
                                  def login(request):
                                       if request.is_ajax():
                                            loginform=LoginForm(request.POST)
                                            
                                            loginResponse={"user":None,"error_msg":None}
                                            if loginform.is_valid():
                                                loginResponse["user"]=username
                                                # session操作
                                            
                                                                                        else:
                                                loginResponse["error_msg"]loginform.errors
                                       
                                            return Httpresponse(json.dumps(loginResponse))
                                       
                                       loginform=LoginForm()
                                       
                                       return(request,"login.html",{"loginform":loginform})               
                        
                            login.html:
                                    <form>
                                           {{loginform.username}} 
                                            <input type="button" value="submit" id="subBtn">    
                                                                         </form>
                                    
                                                                            <script>
                                              $("#subBtn").click(function(){
                                              
                                                     $.ajax({
                                                        url:"/login/",
                                                        type:"POST",
                                                        data:{},
                                                        success:function(data){
                                                               // data    loginResponse
                                                        
                                                        }               
                                                     })
                                              })

                                    </script>

 

转载于:https://www.cnblogs.com/mengqingjian/p/7975769.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值