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 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相关推荐
- Django 的cookie 与 session组件
Cookie概述 什么叫Cookie Cookie翻译成中文是小甜点,小饼干的意思.在HTTP中它表示服务器送给客户端浏览器的小甜点.其实Cookie是key-value结构,类似于一个python中 ...
- Django之Cookie、Session、CSRF、Admin
Django之Cookie.Session.CSRF.Admin Cookie 1.获取Cookie: 1 2 3 4 5 6 request.COOKIES[ 'key' ] request.get ...
- Django组件--cookie与session
一.会话跟踪技术 1.什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而 ...
- django组件-cookie与session
1.什么是会话跟踪技术 我们首先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应,例如你给10086了电话,你就是客户端,而10086服务人员就是 ...
- Django之Cookie和 Session
简单版 1.Cookie:保存在客户端浏览器上的键值对 Django操作cookie obj = HttpResponse() return obj obj = render() return obj ...
- django设置cookie
文章目录 Cookie #0 GitHub #1 环境 #2 开始 #2.1 存储 #2.2 设置 #2.3 加密 #3 session Cookie #0 GitHub https://github ...
- Django中cookie和session的存、取、删除
Django中: cookie的存: response = HttpResponse('登陆成功') #改成重定向等都可以 response.set_cookie('username',usernam ...
- WeChat小程序授权机制踩坑请求头中设置cookie保持session
思路 存储token在redis中,但是现在没有redis,使用session进行存储 ,key为token value为用户信息 session机制使用的文件缓存 token机制使用的redis ...
- cookie和session、web服务工作原理、Apache配置php扩展、php简介
cookie和session: cookie和session区别:cookie数据是存在本地的,而session数据是存在服务端的,session比cookie更安全. cookie:用于http做会 ...
最新文章
- 蓝牙4.0BLE抓包(二) – 广播包解析
- 深度神经网络DNN的多GPU数据并行框架 及其在语音识别的应用
- android调用百度活体检测接口,C#调用百度API实现活体检测的方法
- duilib清空richedit内容
- mysql sys exec_python - 使用MySQL UDF执行命令-sys_exec不起作用 - 堆栈内存溢出
- 鼠标紧跟lable_紧跟当前软件工程趋势的12种方法
- vSAN 设计、部署、运维最佳实践 | 资料
- oracle9i查等待事件,什么是Oracle9i中的一个特殊等待事件?
- 0 full gc时cpu idle_结合GC日志讲讲CMS垃圾收集器
- C#三层架构详细解剖
- 仿乐享微信源码分享,微信公众平台源码
- python 设计单张扑克牌类Card 设计整副扑克牌类Cards
- Python 微信机器人
- android 输入法,里面还集成语音输入
- Linux的route命令
- Memory limit should be smaller than already set memoryswap limit, update the memoryswap at the same
- 西夏文可用电脑录入了【ZZ】
- Vue项目打包部署(history模式)
- 五十条比较经典的爱情观!
- 《Excel数据可视化:一样的数据不一样的图表》——3.5用图标集让你的数据大放异彩...