-forms组件的渲染错误信息
在模板中:<span>{{ foo.errors.0 }}</span>
-forms使用bootstrap样式
widget=widgets.EmailInput(attrs={'class':'form-control'}))
-全局和局部钩子函数
AOP:面向切面编程
-局部钩子函数(再校验name)
def clean_name(self): # 从cleaned_data中取出字段的值 name = self.cleaned_data.get('name') # # 校验是否以sb开头 if name.startswith('sb'): raise ValidationError('不能以sb开头') else: return name
-全局钩子函数
def clean(self): pwd=self.cleaned_data.get('pwd') re_pwd=self.cleaned_data.get('re_pwd') if pwd==re_pwd: # 正确,返回self.cleaned_data return self.cleaned_data else: # 校验失败,抛异常 raise ValidationError('两次密码不一致')
cookie,session,token
cookie
-cookie是存在浏览器上的键值对{'name':'lqz','password':123}
-服务器写到浏览器上的
session:
-因为cookie不安全,所有出了session
-存在于服务器上的键值对 'sfdasdfa':{'name':'lqz','password':123}
token:(待研究)
cookie的使用:
设置cookie:
-HttpResponse的对象 obj.set_cookie(key,value,超时时间)
-obj.set_signed_cookie('name','egon',salt='123')
取cookie:
-request.COOKIES.get(key)
-name=request.get_signed_cookie('name',salt='123')
删除:
HttpResponse的对象 obj.delete_cookie('is_login')
session的使用:
设置
-request.session['name']=‘lqz’
-request.session['age']=‘18’
取cookie:
-request.session.get('name')
删除:
-request.session.delete() 只删数据库
-request.session.flush() 浏览器cookie和数据库
了解:其他参数(超时时间)