django设置cookie和session
2019-04-30 23:42:53来源:博客园 阅读 ()
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,经过某种算法加密后的数
再来看看页面
原文链接:https://www.cnblogs.com/Sunzz/p/10573246.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Django项目中使用qq第三方登录。 2019-08-13
- Django和前端用ajax传输json等数据 2019-08-13
- Django基本知识 2019-08-13
- JavaScript获取Django模板中指定键值的数据,使用过滤器 2019-08-13
- pycharm查看函数用法,参数信息的设置方法 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash