Django基础之Session操作

1. 创建一个示例

1.1 第一步

首先创建一个django项目,创建app01, 连接数据库,做好准备工作。

然后在templates目录下创建两个html:

login.html负责登录页面;

backend页面代表后台页面。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4    <meta charset="UTF-8">
 5    <title>login</title>
 6    <link rel="stylesheet" href="http://830909.blog.51cto.com/static/plugins/bootstrap-3.3.5-dist/css/bootstrap.min.css">
 7 </head>
 8 <body>
 9    <div class="container">
10        <form action="login.html" method="post">
11            <div class="form-group">
12                <label class="sr-only">username</label>
13                <input type="text" class="form-control" name="username" placeholder="用户名"/>
14            </div>
15            <div class="form-group">
16                <label class="sr-only">Password</label>
17                <input type="password" class="form-control" name="passwd" placeholder="密码"/>
18            </div>
19            <div class="form-group">
20                <input class="btn btn-primary" type="submit" value="http://830909.blog.51cto.com/8311014/Submit">
21            </div>
22        </form>
23 </div>
24 <script type="application/Javascript" src="http://830909.blog.51cto.com/static/js/jquery-2.2.1.min.js"></script>
25 <script type="application/javascript" src="http://830909.blog.51cto.com/static/plugins/bootstrap-3.3.5-dist/js/bootstrap.min.js"></script>
26 </body>
27 </html>

login.html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>backend</title>
 6     <link rel="stylesheet" href="http://830909.blog.51cto.com/static/plugins/bootstrap-3.3.5-dist/css/bootstrap.min.css">
 7     <link rel="stylesheet" href="http://830909.blog.51cto.com/static/css/commons.css">
 8 </head>
 9 <body>
10 <div class="container">
11     <h2>cookie 内容是 {{ cookie_content }}</h2>
12     <h2>session 内容是 {{ session_content }}</h2>
13     <h2>登录用户名 :{{ username }}</h2>
14     <a href="http://830909.blog.51cto.com/logout/">注销</a>
15 </div>
16 <script type="application/javascript" src="http://830909.blog.51cto.com/static/js/jquery-2.2.1.min.js"></script>
17 <script type="application/javascript" src="http://830909.blog.51cto.com/static/plugins/bootstrap-3.3.5-dist/js/bootstrap.min.js"></script>
18 </body>
19 </html>

backend.html

1.2 第二步

编辑app01应用下的views.py文件,编写代码逻辑部分。

 1 # /usr/bin/env python
 2 # coding:utf-8
 3 from django.shortcuts import render
 4 from django.shortcuts import redirect
 5 def login(request):
 6     if request.method=="POST":
 7         username=request.POST[‘username‘]
 8         pwd=request.POST[‘passwd‘]
 9         if username==‘abc‘ and pwd==‘123‘:
10             #设置session内部的字典内容
11             request.session[‘is_login‘]=‘true‘
12             request.session[‘username‘]=‘abc‘
13             #登录成功就将url重定向到后台的url
14             return redirect(‘/backend/‘)
15     #登录不成功或第一访问就停留在登录页面
16     return render(request,‘login.html‘)
17 def backend(request):
18     """
19     这里必须用读取字典的get()方法把is_login的value缺省设置为False,
20     当用户访问backend这个url先尝试获取这个浏览器对应的session中的
21     is_login的值。如果对方登录成功的话,在login里就已经把is_login
22     的值修改为了True,反之这个值就是False的
23     """
24     is_login=request.session.get(‘is_login‘,False)
25     #如果为真,就说明用户是正常登陆的
26     if is_login:
27         #获取字典的内容并传入页面文件
28         cookie_content=request.COOKIES
29         session_content=request.session
30         username=request.session[‘username‘]
31         return render(request,‘backend.html‘,
32                       {
33             ‘cookie_content‘:cookie_content,
34             ‘session_content‘:session_content,
35             ‘username‘:username
36                       })
37     else:
38         """
39         如果访问的时候没有携带正确的session,
40         就直接被重定向url回login页面
41         """
42         return redirect(‘/login/‘)
43 def logout(request):
44     """
45     直接通过request.session[‘is_login‘]回去返回的时候,
46     如果is_login对应的value值不存在会导致程序异常。所以
47     需要做异常处理
48     """
49     try:
50         #删除is_login对应的value值
51         del request.session[‘is_login‘]
52     except KeyError:
53         pass
54     #点击注销之后,直接重定向回登录页面
55     return redirect(‘/login/‘)

views.py

1.3 编辑

mydjango目录下的urls.py文件,设置函数与页面的绑定关系。

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^login/‘, views.login),
    url(r‘^backend/‘, views.backend),
    url(r‘^logout/‘, views.logout),
]

最后打开浏览器直接访问/backend/页面的时候直接就被重定向了到/login/ 。

只有在输入了正确的用户名和密码之后才进入了/backend/页面。

从上图中我们看到有以下几点:

  • 1. login页面正确登录的话,后台页面可以获取到浏览器携带的cookie的。
  • 2. 第一行的sessionid其实就是cookie值。
  • 3. session的内容是加密的,从客户端获取不到session的内容。
  • 4. 服务端可以通过预设的key值取出session的内容并打印到前端。

从火狐浏览器里查看cookie:

django的session默认是存储在数据库里的,我们再到数据库查看一下真正session内容。

原文地址:https://www.cnblogs.com/yang-wei/p/9998202.html

时间: 2024-11-08 18:47:50

Django基础之Session操作的相关文章

Django基础之jQuery操作

Django基础之jQuery操作 jquery之cookie操作 定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术: 下载与引入:jquery.cookie.js基于jquery:先引入jquery,再引入:jquery.cookie.js:下载:http://plugins.jquery.com/cookie/ <script type="text/javascript" src="js/jquery.min.js"&

django基础之数据库操作

Django 自称是"最适合开发有限期的完美WEB框架".本文参考<Django web开发指南>,快速搭建一个blog 出来,在中间涉及诸多知识点,这里不会详细说明,如果你是第一次接触Django ,本文会让你在感性上对Django有个认识,完成本文操作后会让你有兴趣阅读的相关书籍和文档. 本博客操作的环境,如无特别说明,后续博客都以下面的环境为基础: =================== Windows 7/10 python 3.5 Django 1.10 ====

Django基础之jQuery操作cookie

jquery之cookie操作 定义:让网站服务器把少量数据储存到客户端的硬盘或内存,从客户端的硬盘读取数据的一种技术: 下载与引入:jquery.cookie.js基于jquery:先引入jquery,再引入:jquery.cookie.js:下载:http://plugins.jquery.com/cookie/ <script type="text/javascript" src="js/jquery.min.js"></script>

Django基础之Session版登录验证

from functools import wraps def check_login(func): @wraps(func) def inner(request, *args, **kwargs): next_url = request.get_full_path() if request.session.get("user"): return func(request, *args, **Kwargs) else: return redirect("/login/?nex

{Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 xxx 八 xxx 一 会话跟踪 我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应.例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了.从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束.在通话过程中,你会向10086发出多个请求,那么这多个请

django 快速实现session的操作

说明: 从这一篇开始就不再完整的介绍django项目的创建过程了,因为前面几篇博客中都详细的介绍了这个创建过程,套路都是一样的,熟悉了这个套路,后面要做的是一些细节技术点的学习和练习. 上一节讲到了django中如何使用cookie来记录用户登录信息,这一节来了解session是如何来记录用户登录信息的. 创建项目,创建应用,设置settings.py的过程不再介绍. 项目目录: 设置URL                                                    

Django框架基础之session

Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去.会话状态仅在支持 cookie 的浏览器中保留 Cookie是什么?             保存在客户端浏览器上的键值对 Session是什么?             保存在服务端的数据(本质是键值对)             服务端sess

Django(基础篇)

Gjango 解析 是一个可以使Web开发工作愉快并且高效的Web开发框架,使用Django,使你的能够一最小的代价创建和维护高质量的Web应用. Django相较与其他Web框架其优势:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 流程 Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持耦合关系,只是定义上有些许不同, Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象(ORM) Template(模

Django[基础知识]

Python功能最全的WEB框架:Django,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 使用Django需进行以下操作: 1.创建Django项目,创建方式有两种. a.命令操作: django-admin startproject  dg_web   //dg_web为项目名称 b.直接在开发环境IDE下进行新建django项目 创建项目之后的文件目录如下: 2.在创建的项目下建立功能程序,操作如下: 命令行:python manage.py startap