Django学习手册 - cookie / session

cookie

"""
cookie属性:
obj.set_cookie(key,value,....)
obj.set_signed_cookie(key,value,salt="加密盐",....)
    参数:
        key                 键
        value=“”           值
        max_age=None        超时时间
        expires=None        超时日期
        path="/"            cookit生效的路径,/表示根路径,特殊的,跟路径的cookie可以被任何url被任何url的页面访问
        domain=None         cookie生效的域名
        secure=False        https传输
        httponly=False      只能http协议传输,无法javascript获取(不是绝对,底层抓包可以获取到)

获取cookie
request.COOKIES
request.COOKIES[‘username‘]
request.COOKIES.get("username")

设置cookie
response = render(request,‘index.html‘)
response = redirect("/index/")
response = set_cookie("key","value")
return response

加盐配置:
obj = HttpResponse("S")
获取加盐cookie
obj.set_signed_cookie("username","passwd",salt="jiayan")
设置加盐cookie
obj.get_signed_cookie("username",salt="jiayan")
获取与设置的加盐 一定要是相同的加盐字符

"""

前端:(login 页面)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div>
        <form action="/login/" method="post">
        <p>
           <span>用户名:</span> <input type="text" name="user">
            <span>密码:</span><input type="password" name="pwd">
            <input type="submit" value="提交">
        </p>
        </form>
    </div>
</body>
</html>

前端:(index页面)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>
        欢迎登录.........

    </h1>
</body>
</html>

URL:

from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from app01 import views

urlpatterns = [
    path(‘admin/‘, admin.site.urls),
    url(‘^login/‘, views.login),
    url(‘^index/‘, views.index),
]

后端:

from django.shortcuts import render,HttpResponse,redirect

# Create your views here.

def login(request):
    print(request.COOKIES)
    print(request.session)
    if request.method == "POST":
        u = request.POST.get("user",None)
        p= request.POST.get("pwd",None)
        if u == "root" and p == "123":
            # cookie的方式:
            # ret = redirect("/index/")
            # #设置cookie数值
            # ret.set_cookie("name","123",10)
            # return ret

            #session方式
            request.session["info_login"]=True
            request.session["user"] = u
            return redirect("/index/")

        else:
            redirect("/login/")
    return render(request,"login.html")

def index(request):
    #cookie
    # if request.COOKIES.get("name",None):
    #     print("index")
    #     return render(request,"index.html")

    #session
    if request.session.get("info_login",None):
        name = request.session.get("user")
        return render(request,"index.html")
    #session 默认存放在数据库中。

    else:
        return redirect("/login/")

--------------------------------------------------------------------------------------------------------------------------------------------------------

装饰器的方式:

from django.shortcuts import render,redirect,HttpResponse

# Create your views here.

def aut(fum):
    def log(request,*args,**kwargs):
        if request.COOKIES.get("user",None):
            return fum(request,*args,**kwargs)
        else:
            return redirect("/login/")
    return log

def login(request):
    if request.method == "POST":
        u = request.POST.get("user", None)
        p = request.POST.get("pwd", None)
        if u == "root" and p == "123":
            ret = redirect("/index/")
            # ret.set_cookie("user", u)
            ret.set_signed_cookie("user",u,salt="abcd")

            return ret
        else:
            return redirect("/login/")
    return render(request,"login.html")

@aut
def index(request):
    return HttpResponse("OK")

原文地址:https://www.cnblogs.com/Anec/p/9586015.html

时间: 2024-10-27 08:43:58

Django学习手册 - cookie / session的相关文章

【转】学习总结--Cookie &amp; Session总结

转载地址:http://www.phperzone.cn/portal.php?aid=718&mod=view 一.状态管理1)什么是状态管理?   将浏览器与web服务器之间多次交互过程当做一个整体来处理,并且将多次交互所涉及的数据进行管理.2)状态管理技术cookie:    a,什么是cookie?   是一种客户端(浏览器)的状态管理技术.   浏览器在访问web服务器的时候,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器,浏览器会将这结数据保存下来:当浏览器再次访

Django学习之Cookie和Session

一.Cookie 1.Cookie的由来 2.什么是Cookie 3.Cookie的原理 4.查看Cookie 二.Django中操作Cookie 1.获取Cookie 2.设置Cookie 3.删除Cookie 4.Cookie版登陆校验 三.Session 1.Session的由来 2.Session流程解析 四.Django中Session操作 1.相关方法 2.Session版登陆验证 4.Django中的Session配置 一.Cookie 1.Cookie的由来 大家都知道HTTP协

Web安全测试学习笔记(Cookie&amp;Session)

一,Session:含义:有始有终的一系列动作\消息1, 隐含了"面向连接" 和"保持状态"两种含义2, 一种用来在客户端与服务器之间保持状态的解决方案3, 也指这种解决方案的存储结构"把××保存在session里" 二, http 协议本来是无状态的,所以引进了cookie和session机制来保持连接状态 cookie与session 机制之间的区别与联系:cookie机制采用的是在客户端保持状态的方法session机制采用的是在服务器端保持

Django项目之cookie+session

原文:https://www.cnblogs.com/sss4/p/7071334.html HTTP协议 是短连接.且状态的,所以在客户端向服务端发起请求后,服务端在响应头 加入cokie响应给浏览器,以此记录客户端状态: cook是来自服务端,保存在浏览器的键值对,主要应用于用户登录: cookie如此重要!!那么如何在Django应用cookie呢?cookie又有什么缺陷呢? 一.Django应用cookie 参数介绍 1.max_age=1 :cookie生效的时间,单位是秒 2.ex

django学习之- Cookie

cookie:客户端游览器上的一个文件,以键值对进行保存,类似字典{'k':'sfs'},与服务器端没有关系,当游览器访问服务器时候,服务器会生成一个随机字符串保存在cookie中返回给客户端,这样当客户端游览器下次访问服务器端时候,会带着这个保存了服务器端的随机字符串的cookie访问服务器,服务器端收到请求后,经过检查此cookie已存在此随机字符串,表示此客户端为已通过认证的状态,可以直接登录.举例:通过帐号登录服务器后,服务器端对cookie进行username标识,等客户端下一次访问时

Django学习手册 - 初识django

初识: django简介: 开放源代码的web应用框架 由python语言编写的. 一.框架基本概念(核心): 以上这个图就是 django 的核心逻辑图,必须熟记.后续的所有编程都跟这个图的逻辑息息相关. 二.MVC/MTV 是啥子? MVC:全名Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交

Django学习手册 - 创建Django工程项目以及APP

前置步骤: 下载python,django 并且安装好 python 解释器以及django模块. 整体步骤阐述: 创建django工程项目 步骤一:进入安装的python目录 步骤二:输入创建工程的命令: 创建业务APP目录 步骤一:进入已创建的工程项目目录 步骤二:输入创建APP 工程项目名称 创建django工程项目: 1.进入安装的python目录下的scripts 目录中 2.在此文件夹的空白处 shift + 鼠标右键  ,在此处打开命令窗口 3.在此窗口下输入: 1 django-

Django学习手册 - pycharm 安装/建立第一个网站hello world

步骤阐述: 1.下载 pycharm 安装包,安装pycharm 2.打开pycharm软件,新建工程项目 3.新建APP,配置url,启动项目 步骤1: pycharm 官网下载: https://www.jetbrains.com/pycharm/ 安装方式跟普通windows 软件安装方式一致,建议指定安装路径. 步骤2: 配置pycharm 软件 1.在创建工程目录前,先要配置解释器(当然默认直接建立Django项目也是可以的,但后续加载新项目会加载不了,所以建议先配置指定解释器.) 文

Django学习手册 - sqlit数据库操作

步骤阐述:( splitDB 是Django自带的一个数据库) 1.在APP01 中的 models.py 配置DB信息  userinfo 相当于数据表的表名,而 uname.pwd 相当于 表中的两个列字段.(DB默认还会自建一个ID列) 2.在setting 中注册 app01. 3.运行命令,建立数据表,写入数据. 4.split 数据库的基本增删改查. 步骤1.在业务app01 models 文当中 写入数据表的 表字段(uname 和 pwd 这个两个字段) 步骤2.在luru的主目