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 viewsurlpatterns = [path('admin/', admin.site.urls),path('login/', views.login),path('index/', views.index),
]

视图函数

from django.shortcuts import render, redirect, HttpResponse
from cookie import modelsdef 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 objelse: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_viewsurlpatterns = [......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"] = Truerequest.session["username"] = user_obj.usernameobj = redirect("/session_index/")return objelse: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

django设置cookie和session相关推荐

  1. Django 的cookie 与 session组件

    Cookie概述 什么叫Cookie Cookie翻译成中文是小甜点,小饼干的意思.在HTTP中它表示服务器送给客户端浏览器的小甜点.其实Cookie是key-value结构,类似于一个python中 ...

  2. Django之Cookie、Session、CSRF、Admin

    Django之Cookie.Session.CSRF.Admin Cookie 1.获取Cookie: 1 2 3 4 5 6 request.COOKIES[ 'key' ] request.get ...

  3. Django组件--cookie与session

    一.会话跟踪技术 1.什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而 ...

  4. django组件-cookie与session

    1.什么是会话跟踪技术 我们首先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应,例如你给10086了电话,你就是客户端,而10086服务人员就是 ...

  5. Django之Cookie和 Session

    简单版 1.Cookie:保存在客户端浏览器上的键值对 Django操作cookie obj = HttpResponse() return obj obj = render() return obj ...

  6. django设置cookie

    文章目录 Cookie #0 GitHub #1 环境 #2 开始 #2.1 存储 #2.2 设置 #2.3 加密 #3 session Cookie #0 GitHub https://github ...

  7. Django中cookie和session的存、取、删除

    Django中: cookie的存: response = HttpResponse('登陆成功') #改成重定向等都可以 response.set_cookie('username',usernam ...

  8. WeChat小程序授权机制踩坑请求头中设置cookie保持session

    思路 存储token在redis中,但是现在没有redis,使用session进行存储 ,key为token   value为用户信息 session机制使用的文件缓存 token机制使用的redis ...

  9. cookie和session、web服务工作原理、Apache配置php扩展、php简介

    cookie和session: cookie和session区别:cookie数据是存在本地的,而session数据是存在服务端的,session比cookie更安全. cookie:用于http做会 ...

最新文章

  1. 蓝牙4.0BLE抓包(二) – 广播包解析
  2. 深度神经网络DNN的多GPU数据并行框架 及其在语音识别的应用
  3. android调用百度活体检测接口,C#调用百度API实现活体检测的方法
  4. duilib清空richedit内容
  5. mysql sys exec_python - 使用MySQL UDF执行命令-sys_exec不起作用 - 堆栈内存溢出
  6. 鼠标紧跟lable_紧跟当前软件工程趋势的12种方法
  7. vSAN 设计、部署、运维最佳实践 | 资料
  8. oracle9i查等待事件,什么是Oracle9i中的一个特殊等待事件?
  9. 0 full gc时cpu idle_结合GC日志讲讲CMS垃圾收集器
  10. C#三层架构详细解剖
  11. 仿乐享微信源码分享,微信公众平台源码
  12. python 设计单张扑克牌类Card 设计整副扑克牌类Cards
  13. Python 微信机器人
  14. android 输入法,里面还集成语音输入
  15. Linux的route命令
  16. Memory limit should be smaller than already set memoryswap limit, update the memoryswap at the same
  17. 西夏文可用电脑录入了【ZZ】
  18. Vue项目打包部署(history模式)
  19. 五十条比较经典的爱情观!
  20. 《Excel数据可视化:一样的数据不一样的图表》——3.5用图标集让你的数据大放异彩...

热门文章

  1. 找到一本不错的Linux电子书,附《Linux就该这么学》章节目录。
  2. C++11 Lambda
  3. [计算机网络] C++模拟telnet登陆SMTP服务发送邮件过程
  4. angular具体用法及代码
  5. shareSDK 微信分享的时候只能分享jpg格式的图片大于32k时为什么分享不出去?
  6. 系统学习Spring之Spring in action(二)
  7. distinct 只针对一个字段
  8. Excel的日期格式约定与解析
  9. MySQl的库操作、表操作和数据操作
  10. DSP5509项目之用FFT识别钢琴音调(1)