zoukankan      html  css  js  c++  java
  • django之cookie

    定义:具体一个浏览器针对一个服务器有值(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')

  • 相关阅读:
    CV类数据集高速下载
    pytorch和tensorflow的爱恨情仇之参数初始化
    pytorch和tensorflow的爱恨情仇之定义可训练的参数
    同时打乱数据集和标签的几种方式
    pytorch和tensorflow的爱恨情仇之张量
    解决pip安装pytorch缓慢问题(直接使用命令)
    pytorch和tensorflow的爱恨情仇之基本数据类型
    完美解决xxx网盘上传和下载慢问题
    大学生运动情况调研计划
    dockerFile解析
  • 原文地址:https://www.cnblogs.com/lshedward/p/10351912.html
Copyright © 2011-2022 走看看