django(钩子函数hook,cookie和session)

django中的钩子函数:

基于我们的项目来说,钩子函数就是比较forms组件中的字段的校验。

局部钩子函数(校验单个字段)和全局钩子函数(校验多个字段)。

局部钩子函数:

def clean_name(self):  # 此处self为我们自定义类产生的对象,name对应于相应的字段名
    name = self.cleaned_data.get('name')
    if '666' in name:
        self.add_error('name', '光喊666是不行的,要有真实力!')
    return name

全局钩子函数:

def clean(self):
    password = self.cleaned_data.get('password')  # clean_data 存放则django校验正确后的信息
    confirm_password = self.cleaned_data.get('confirm_password')
    if not password == confirm_password:
        slef.add_error('conirm_password', '两次密码不一致!')
    return self.cleaned_data

Django中的cookie和session:

cookie:保存在客户端浏览器的键值对。

session:  保存在服务端的键值对,服务端产生随机字符串发送给客户端,服务端找一个地方将这个字符串与对应信息保存起来,{'随机字符串 ':'敏感信息'}

设置cookie:

obj = HttpResponse()
return obj

obj = render()
return obj

obj = redirect()
return obj

# 手动设置cookie
obj.set_cookie('name', 'jason', expires=7*24*3600)  #expires指定cookie的生命周期

# django的中间件指定的{{ crsf_token }}默认的存活周期为2周
# path 中的 '/' 为根路径 

利用设置的cookie来实现一个登录校验的装饰器

from functools import wraps
def login_auth(func):
    @wraps(func)
    def inner(request, *args, **kwargs):
        # 校验cookie
        old_path = request.get_full_path() # 获取用户当前访问的路径
        if request.COOKIES.get('name'):
            return func(request, *args, **kwargs)
        return redirect('/login/?next=%s'%old_path) # 指定特定的网页跳过装饰器的验证
    return inner

 

 

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值