Django-5

Django-5

1.Coookie

1.1 什么是cookie

Cookie是储存在浏览器端的一小段文本数据(键值对). 被广泛用于在网站之间传输信息, 当您访问一个网站时,它会将一个Cookie发送到您的浏览器中,并在您返回该网站时读取该Cookie。

1.2 如何在django中使用cookie

设置cookie

rep = render(request, ....)
rep.set_cookie = {key: value}  # 设置cookie
"""
参数: key: 键  vlaue: 值
	max_age =  超时时间
	expires=None  超时时间
	path = '/'  生效路径
	secure = False  Https传输
	httponly = False  无法被js获取
"""    
request.COOKIES.get("...")  # 获取cookie
// 通过js操作cookie的值
// 1> 先导入jquery.cookie.js
// 2> 两种方式获取cookie的值
$.cookie.js
document.cookie

加盐的cookie:

# django加盐基于HMAC算法签名
rep.set_signed_cookie('username', '...', salt='salt')  # 加盐
rep.get_signed_cookie('username', salt='salt')  # 获取

2.装饰器基于FBV和CBV的应用

2.1 FBV的验证用户登录

def wrapper(func):
    def inner(request, *args, **kwargs):
        # 验证登录信息
        if not request.cookie.get('usernmae'):
            return redirect('/login/')
        ret = func(request, *args, **kwargs)  # 原函数
        return ret
    return inner

@wrapper
def home(request):
    return Http('登录成功')

2.2 CBV的验证用户登录

from django.utils.decorators import method_decorator

def wrapper(func):
    def inner(request, *args, **kwargs):
        # 验证登录信息
        if not request.cookie.get('usernmae'):
            return redirect('/login/')
        ret = func(request, *args, **kwargs)  # 原函数
        return ret
    return inner

@method_decorator(auth, name='dispatch')
class Home(views.View):
    # @method_decorator(auth)  # 相当于给所有映射关系都加装饰器
    # def dispatch(self, request, *args, **kwargs):
    #     return super(Order, self).dispatch(request, *args, **kwargs)
    
    def get(self, request):  # 固定方法
        print(request.method)  # GET
        return render(request, 'home.html')

    def post(self, request):  # 固定方法
        print(request.method)  # POST
        return render(request, 'home.html')

3.session

...未完待续