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的更多相关文章

  1. Django之Cookie、Session、CSRF、Admin

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

  2. [py][mx]django的cookie和session操作-7天免登录

    浏览器同源策略(same-origin policy) csrf攻击防御核心点总结 django的cookie和session操作-7天免登录 flask操作cookie&django的see ...

  3. Django基础cookie和session

    Django基础cookie和session 1.会话跟踪 ​ 什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如给10086打个电话,你就是客户端, ...

  4. django 中 cookie与session 相关的知识

    cookie :它是一个字典  

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

    cookie和session cookie和session的作用: cookie和session都记录了客户端的某种状态,用来跟踪用户访问网站的整个回话.两者最大的区别是cookie的信息是存放在浏览 ...

  6. django的cookie 和session

    Cookie 1.获取cookie: request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt=' ...

  7. Django组件-cookie与session

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

  8. web框架开发-Django组件cookie与session

    http协议的每一次都是无保存状态的请求,这会带来很多的不方便,比如,一刷新网页,或者进入该网页的其他页面,无法保存之前的登录状态.为了解决类似这样的问题,引入了会话跟踪 会话跟踪技术 1 什么是会话 ...

  9. Django 之 cookie和session

    一. Cookie 1.Cookie的由来 因为HTTP协议是无状态的,无状态的意思就是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,也不会受前后请求响应情况直接影响.简 ...

随机推荐

  1. Java-Runoob-高级教程-实例-字符串:01. Java 实例 – 字符串比较

    ylbtech-Java-Runoob-高级教程-实例-字符串:01. Java 实例 – 字符串比较 1.返回顶部 1. Java 实例 - 字符串比较  Java 实例 以下实例中我们通过字符串函 ...

  2. mysql-6正则表达式

    mysql正则表达式 匹配的两种方式: 1.模糊匹配:like 2.正则表达式 正则表达式语法: 语法 说明 ^ 起始位置.如果设置了RegExp对象的Multiline属性,^也匹配'\n'或'\r ...

  3. IDEA中修改各个部位的字体大小

    1.菜单栏 Setting -> Appearance&Behavior -> Appearance ->Override default fonts by (not rec ...

  4. 五.jQuery源码解析之jQuery.extend(),jQuery.fn.extend()

    给jQuery做过扩展或者制作过jQuery插件的人这两个方法东西可能不陌生. jQuery.extend([deep],target,object1,,object2...[objectN]) jQ ...

  5. Asp.netMVC中地址后缀使用.html,jsp等404错误解决

    asp.net mvc 默认的地址路径url都是没有后缀的比如 www.a.com/aa/bb 等 如果要是www.a.com/aa/bb.html需要专门写路由. 根据我之前的经验,mvc的路由是相 ...

  6. ggplot2 texts : Add text annotations to a graph in R software

    http://www.sthda.com/english/wiki/ggplot2-texts-add-text-annotations-to-a-graph-in-r-software Instal ...

  7. linux 单网卡来绑定多IP实现多网段访问以及多网卡绑定单IP实现负载均衡

    ifconfig eth0 hw AA:BB:CC:DD:EE:FF

  8. 前端开发中常用的CSS选择器解析(一)

    你也许已经掌握了id.class.后台选择器这些基本的css选择器.但这远远不是css的全部.下面向大家系统的介绍css中最常用的选择器,包括我们最头痛的浏览器兼容性问题.掌握了它们,才能真正领略cs ...

  9. Linux TCP/IP 连接查看和问题解决

    netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n  上面的 命令可以帮助分析哪种Tcp状态数量异常     netstat -nat|gr ...

  10. iframe 元素会创建包含另外一个文档的内联框架(即行内框架)

    HTML 与 XHTML 之间的差异 在 HTML 4.1 Strict DTD 和 XHTML 1.0 Strict DTD 中,不支持 iframe 元素. 提示和注释: 提示:您可以把需要的文本 ...