首页 > 其他 > 详细

django之cookie

时间:2019-02-04 17:29:18      阅读:179      评论:0      收藏:0      [点我收藏+]

定义:具体一个浏览器针对一个服务器有值(key-value)

设置cookie

views.py

from django.shortcuts import render, HttpResponse, redirect

# Create your views here.


from app01.models import UserInfo


def login(request):
    if request.method == POST:
        user = request.POST.get(user)
        pwd = request.POST.get(pwd)

        user = UserInfo.objects.filter(user=user, pwd=pwd).first()

        if user:
            ‘‘‘
            响应体:
                return HttpResponse()
                return render()
                return redirect() 
            
            响应体都可以设置cookie
            ‘‘‘

            response = HttpResponse(登陆成功)
            response.set_cookie(is_login, True)
            response.set_cookie(username, user.user) # 后面登陆的会把前面的覆盖

            return response

    return render(request, login.html)


def index(request):
    print(request.COOKIES)  # {‘csrftoken‘: ‘略‘, ‘is_login‘: ‘True‘}

    is_login = request.COOKIES.get(is_login)

    if is_login:
        username = request.COOKIES.get(username)
        return render(request, index.html, locals())
    else:
        return redirect(/login)

 

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
</head>
<body>

<h3>Hi, {{ username }}</h3>
</body>
</html>

 

cookie参数

‘‘‘
class HttpResponseBase:

        def set_cookie(self, key,                 键
                     value=‘‘,            值
                     max_age=None,        超长时间 
                              cookie需要延续的时间(以秒为单位)
                              如果参数是\ None`` ,这个cookie会延续到浏览器关闭为止。

                     expires=None,        超长时间
                                 expires默认None ,cookie失效的实际日期/时间。 
                                

                     path=‘/‘,           Cookie生效的路径,
                                                 浏览器只会把cookie回传给带有该路径的页面,这样可以避免将
                                                 cookie传给站点中的其他的应用。
                                                 / 表示根路径,特殊的:根路径的cookie可以被任何url的页面访问
                     
                             domain=None,         Cookie生效的域名
                                                
                                                  你可用这个参数来构造一个跨站cookie。
                                                  如, domain=".example.com"
                                                  所构造的cookie对下面这些站点都是可读的:
                                                  www.example.com 、 www2.example.com 
                                 和an.other.sub.domain.example.com 。
                                                  如果该参数设置为 None ,cookie只能由设置它的站点读取。

                     secure=False,        如果设置为 True ,浏览器将通过HTTPS来回传cookie。
                     httponly=False       只能http协议传输,无法被JavaScript获取
                                                 (不是绝对,底层抓包可以获取到也可以被覆盖)
                  ): pass

‘‘‘

 

实操

def login(request):
    if request.method == POST:
        user = request.POST.get(user)
        pwd = request.POST.get(pwd)

        user = UserInfo.objects.filter(user=user, pwd=pwd).first()

        if user:
            ‘‘‘
            响应体:
                return HttpResponse()
                return render()
                return redirect() 
            
            响应体都可以设置cookie
            ‘‘‘

            response = HttpResponse(登陆成功)
            response.set_cookie(is_login, True, max_age=15)
            # import datetime
            # data = datetime.datetime(year=2019, month=2, day=1, hour=9, minute=28, second=30)  # GMT时间,固定在哪一个时刻失效
            # response.set_cookie(‘username‘, user.user, expires=data)  # 后面登陆的会把前面的覆盖

            response.set_cookie(username, user.user, path=/index/)  # 只有index下的视图函数可以获得这个cookie

            return response

    return render(request, login.html)

 

cookie应用之保存上次访问时间

def index(request):
    print(request.COOKIES)  # {‘csrftoken‘: ‘略‘, ‘is_login‘: ‘True‘}

    is_login = request.COOKIES.get(is_login)

    if is_login:
        username = request.COOKIES.get(username)
        
        # 保存上次访问时间
        import datetime
        now = datetime.datetime.now().strftime(%Y-%m-%d %X)

        last_time = request.COOKIES.get(last_visit_time,‘‘) # 记录的上次访问index的时间,如果记录login的就写到login里面
        response = render(request, index.html, {username: username, last_time: last_time})
        response.set_cookie(last_visit_time, now)  # 把上次时间保存到cookie
        return response
    else:
        return redirect(/login)

 

django之cookie

原文:https://www.cnblogs.com/lshedward/p/10351912.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!