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"] = True
request.session["username"] = user_obj.username,经过某种算法加密后的数
再来看看页面
django设置cookie和session的更多相关文章
- Django之Cookie、Session、CSRF、Admin
Django之Cookie.Session.CSRF.Admin Cookie 1.获取Cookie: 1 2 3 4 5 6 request.COOKIES['key'] request.get ...
- [py][mx]django的cookie和session操作-7天免登录
浏览器同源策略(same-origin policy) csrf攻击防御核心点总结 django的cookie和session操作-7天免登录 flask操作cookie&django的see ...
- Django基础cookie和session
Django基础cookie和session 1.会话跟踪 什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如给10086打个电话,你就是客户端, ...
- django 中 cookie与session 相关的知识
cookie :它是一个字典
- django的cookie和session以及内置信号、缓存
cookie和session cookie和session的作用: cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话.两者最大的区别是cookie的信息是存放在浏览 ...
- django的cookie 和session
Cookie 1.获取cookie: request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt=' ...
- Django组件-cookie与session
一.会话跟踪技术 1.什么是会话跟踪技术 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而 ...
- web框架开发-Django组件cookie与session
http协议的每一次都是无保存状态的请求,这会带来很多的不方便,比如,一刷新网页,或者进入该网页的其他页面,无法保存之前的登录状态.为了解决类似这样的问题,引入了会话跟踪 会话跟踪技术 1 什么是会话 ...
- Django 之 cookie和session
一. Cookie 1.Cookie的由来 因为HTTP协议是无状态的,无状态的意思就是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,也不会受前后请求响应情况直接影响.简 ...
随机推荐
- Linux安装imagick扩展出现错误:configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.
在Linux(CentOS)上安装imagick扩展时,遇到如下错误: checking ImageMagick MagickWand API configuration program... che ...
- Spring batch学习 (1)
Spring Batch 批处理框架 埃森哲和Spring Source研发 主要解决批处理数据的问题,包含并行处理,事务处理机制等.具有健壮性 可扩展,和自带的监控功能,并且支持断点和重发.让程序员 ...
- 关于C语言中%p和%X的思考
说白了,(%A)仅仅代表以何种格式显示所要显示的数据,具体何种格式如下: %d 有符号10进制整数 %i 有符号10进制整数 %o 无符号8进制整数 %u 无符号10进制整数 %x 无符号的16进制数 ...
- JDK8时间格式转换
来源:https://blog.csdn.net/zhangzijiejiayou/article/details/76597329 LocalDateTime 本地日期时间 LocalDateTim ...
- RAD XE8
http://community.embarcadero.com/index.php/blogs/entry/rad-studio-2015-roadmap http://www.embarcader ...
- VB.NET 指针
在.NET中,对指针指向数据的存储函数都封装在marshal类中,主要的函数包括:Copy.PtrToStringUni .PtrToStructure .OffsetOf.WriteXXX,Rrea ...
- Mysql 索引优化 - 1
单表 范围查询 后面的索引会失效 双表 左右连接建立索引互相使用 三表 用小结果集驱动大表结果, 先优化括号里面的SQL, 保证JOIN被驱动的表上ON字段有索引 索引失效(常见原因) 全职匹 ...
- 迷你MVVM框架 avalonjs 学习教程9、类名操作
ms-class是avalon用得最多的几个绑定之一,也正因为如此其功能一直在扩充中.根据时期的不同,分为旧风格与新风格两种. 旧风格是指ms-class-xxx=”expr”,*ms-class-a ...
- 使用 Zend_Studio 开发
之前一直用vim 写PHP, 总觉得IDE的一大堆没有用的插件非常麻烦,所以一直避免使用Zend_Studio.不过随着PHP的发展和框架的发展,以及个人的发展,最后还是回到的IDE的时代. 在使用Z ...
- springmvc框架自带的异常处理器SimpleMappingExceptionResolver的使用
使用分三步 1.定义异常类 2.在处理器中的用法 3.在springmvc配置文件中需要加配置