django设置cookie和session

1 设置cookie

本例中应用名称为cookie

模型model

from django.db import models

from django.db import models
class UserInfo(models.Model):
    username = models.CharField(max_length=64)
    password = models.CharField(max_length=64)

数据库迁移

python manage.py makemigrations
python manage.py migrate

给数据库添加数据

路由urls

from django.contrib import admin
from django.urls import path
from cookie import views

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

视图函数

from django.shortcuts import render, redirect, HttpResponse
from cookie import models

def login(request):
    ret = ""
    if request.method == "POST":
        user = request.POST.get("user")
        pwd = request.POST.get("pwd")
        # 查询数据库中的用户名和密码
        user_obj = models.UserInfo.objects.filter(username=user, password=pwd).first()
        if user_obj:
            """
            如果验证通过,则重定向至index并设置cookie
            """
            obj = redirect("/index/")
            obj.set_cookie("is_login", True, 30)  # cookie有效期为30秒
            obj.set_cookie("username", user_obj.username)
            return obj
        else:
            ret = "用户名或密码错误"
    return render(request, "login.html", {"ret": ret})

def index(request):
    is_login = request.COOKIES.get("is_login")
    username = request.COOKIES.get("username")
    if not is_login:
        return redirect("/login/")
    return render(request, "index.html", {
        "user": username
    })    

模板页面

登录页面 login.html

<body>
<h3>用户登录页面</h3>
<form action="/login/" method="post">
    {% csrf_token %}
    <p>用户名:<input type="text" name="user"></p>
    <p>密码:<input type="password" name="pwd"></p>
    <p><span>{{ ret }}</span></p>
    <input type="submit" value="登录" class="sub_btn">
</form>
</body>

首页index.html

<body>
<h3>这是index页面。你好 {{ user }}</h3>
</body>

下来访问测试一下

点击登录

可以看到,已经按预想跳转至index页面

下来看看设置的cookie

再来看看,重定向访问时携带的cookie值

2 设置session

创建应用

python manage.py startapp session

注册应用

设置settings.py

INSTALLED_APPS = [
    ...
    ‘cookie.apps.CookieConfig‘,
    ‘session.apps.SessionConfig‘
]

路由urls

.....
from session import views as session_views

urlpatterns = [
    ......
    path(‘session_login‘, session_views.session_login),
    path(‘session_index‘, session_views.session_index),
    path(‘session_logout‘, session_views.session_logout),
]

视图函数

from django.shortcuts import render, redirect
from cookie import models  # 由于要用到数据,所有要吃cookie应用里面导入

def session_login(request):
    ret = ""
    if request.method == "POST":
        user = request.POST.get("user")
        pwd = request.POST.get("pwd")
        user_obj = models.UserInfo.objects.filter(username=user, password=pwd).first()
        if user_obj:
            """
            如果验证通过,则设置session,并返回session_index
            """
            request.session["is_login"] = True
            request.session["username"] = user_obj.username
            obj = redirect("/session_index/")
            return obj
        else:
            ret = "用户名或密码错误"
    return render(request, "session_login.html", {"ret": ret})
def session_index(request):
    is_login = request.session.get("is_login")
    username = request.session.get("username")
    if not is_login:
        """如果没有登录则跳转至登录页面"""
        return redirect("/session_login")

    return render(request, "session_index.html", {"user": username})

def session_logout(request):
    request.session.flush()
    return redirect("/session_login/")

模板页面

session_index.html

<h3>基于session的用户登录</h3>
<form action="/session_login/" method="post">
    {% csrf_token %}
    <p>用户名:<input type="text" name="user"></p>
    <p>密码:<input type="password" name="pwd"></p>
    <p><span>{{ ret }}</span></p>
    <input type="submit" value="登录" class="sub_btn">
</form>

session_index.html

<body>
<h3>这是session_index页面。</h3>
<h3>你好 {{ user }}</h3>
<a href="/session_logout/">注销</a>
</body>

下来测试

可以看到数据库中session表已经有数据了,session_key为随机生成的,为请求时携带的cookie键,session_data为

request.session["is_login"] = Truerequest.session["username"] = user_obj.username,经过某种算法加密后的数

再来看看页面

原文地址:https://www.cnblogs.com/Sunzz/p/10573246.html

时间: 2024-10-17 06:35:24

django设置cookie和session的相关文章

[py][mx]django的cookie和session操作

这玩意可以实现7天免登录等功能. session和cookie机制原理和交互过程 交互过程 ① 客户端访问,无服务端写入的Cookie ② 服务端的Cookie写入浏览器 ③ 浏览器解析Cookie,保存至浏览器文件 ④ 客户端访问,有服务端写入的Cookie ⑤ 服务器获取 django请求中的cookie 第一次访问服务端会给一个csrf的cookie 登录完成后,默认给一个为期半个月的cookie 用于访问别的也没使用. django中cookie与session的实现原理 app默认注册

十一、Django的cookie和session

一.Django的cookie和session 一.会话 会话可以理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束. 在一个会话的多个请求中,需要共享数据,就是会话跟踪技术.比如你在登陆银行主页,请求登录.请求取款.请求转账.请求还款...,在这个会话中,当前的用户信息必须在这个会话中是共享的,因为登录的是你,那么取款转账时一定是相对你的取款转账 .这就说明我们必须在一个会话过程中有共享数据的

Django组件——cookie与session

Django组件--cookie与session 一.会话跟踪技术 1.什么是会话跟踪技术 先了解一下什么是会话.可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打电话,你就是客户端,而10086服务人员就是服务器,从双方接通电话那一刻起,会话就开始了,到某一方挂断电话就表示会话结束.在通话过程中,你会向10086发出多个请求,这多个请求都在一个会话中. 在JavaWeb在,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览

Django中Cookie和Session的基本配置以及设置

Cookie 1.获取Cookie: request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None) 参数: default: 默认值 salt: 加密盐 max_age: 后台控制过期时间 2.设置Cookie: rep = HttpResponse(...) 或 rep = render(request, ...) rep.set_cookie(key,valu

Django之Cookie、Session、CSRF

Cookie 1.获取Cookie: 1 2 3 4 5 6 request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)     参数:         default: 默认值            salt: 加密盐         max_age: 后台控制过期时间 2.设置Cookie: 1 2 3 4 5 6 7 8 9 10 11 12 13 rep

django的cookie和session以及内置信号、缓存

cookie和session cookie和session的作用: cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话.两者最大的区别是cookie的信息是存放在浏览器客户端的,而session是存放在服务器端的 cookie的基本操作 cookie增删改查操作 1.设置Cookies response.set_cookie("cookie_key","value") 2.获取Cookies value = request.COOK

Django之cookie和session

一.cookie 保存在客户端浏览器上的键值对 1.获取cookie 1 request.COOKIES['key'] 2 request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None) 3 参数: 4 default: 默认值 5 salt: 加密盐 6 max_age: 后台控制过期时间 2.设置cookie 1 rep = HttpResponse(...) 或 rep = render(request,

Django中cookie和session

cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况. 一句有意思的话来描述就是人生只如初见,对服务器来说,每次的请求都是全新的. 状态可以理解为客户端和服务器在某次会话中产生的数据,那无状态的就以为这些数据不会被保留.会话中产生的数据又是我们需要保存的,也就是说要"保持状态".因此cookie就是在这样一个场景

pyhton框架Django之cookie和session

一,cookie和session的理解 cookies 是浏览器为 Web 服务器存储的一小段信息. 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies.它保存在浏览器下的某个文件夹下.保存在浏览器端的键值对可以利用做登录 浏览器下的cookei: Session Django的Session机制会向请求的浏览器发送cookie字符串.同时也会保存到本地一份,用来验证浏览器登录是否为同一用户.它存在于服务器,Django默认会把session存入到数据库中. Session