Django--cookie&session

一、基础

cookie保存在浏览器本地,格式:iii="8jblpb9g2l5c9xvofhv5pt8c0v967z5t"

session保存在服务器端。格式:{"cookie值":{"isLogin":True,"username":"xxx"},cookie:{}}

二、流程

  1. 服务器生成一段字符串
  2. 把字符串发送给客户端浏览器,同时将字符串当做key放置session信息
  3. 在用户的session对应的value(字典)里设置任意值

三、错误解决

报错:no such table: django_session

原因:

Django的session是放在数据库里,要先初始化表。

解决:

项目目录路径> python manage.py migrate

四、实例

1、需求

订单页面未登录不能访问,直接跳转到登录页面。

2、登录页面

app01/views.py

1

2

3

4

5

6

7

8

def login(request):

    if request.method==‘POST‘:

        username=request.POST.get(‘username‘)

        pwd= request.POST.get(‘pwd‘)

        if username == ‘user1‘ and pwd == ‘123‘:

            request.session[‘is_login‘] = True

            return redirect(‘/order/‘)

    return render(request,‘login.html‘)

urls.py

1

2

3

4

5

from app01 import views

urlpatterns = [

    url(r‘^admin/‘, admin.site.urls),

    url(r‘^login/$‘, views.login),

]

templates/login.html

1

2

3

4

5

6

7

<body>

    <form action="/login/" method="post">

        <input type="text" name="username">

        <input type="password" name="pwd">

        <input type="submit" value="submit">

    </form>

</body>

4、订单页面

app01/views.py

1

2

3

4

5

6

def order(request):

    is_login = request.session.get(‘is_login‘,False)    #False是默认值,不设置会报错

    if is_login:

        return HttpResponse(‘order‘)

    else:

        return redirect(‘/login/‘)

urls.py

1

2

3

4

5

6

from app01 import views

urlpatterns = [

    url(r‘^admin/‘, admin.site.urls),

    url(r‘^order/$‘, views.order),

    url(r‘^login/$‘, views.login),

]

5、浏览器

6、数据库

7、扩展:订单页面右上角显示登录用户

还可以定义其它值,如username,登录成功的时候就设置上,然后页面可以根据不同的用户显示不同的数据。

views.py

1

2

3

4

5

6

7

8

9

def login(request):

    if request.method==‘POST‘:

        username=request.POST.get(‘username‘)

        pwd= request.POST.get(‘pwd‘)

        if username == ‘user1‘ and pwd == ‘123‘:

            request.session[‘is_login‘] = True

            request.session[‘username‘] = ‘user1‘

            return redirect(‘/order/‘)

    return render(request,‘login.html‘)

views.py

1

2

3

4

5

6

7

def order(request):

    is_login = request.session.get(‘is_login‘,False)    #False是默认值,不设置会报错

    if is_login:

        username = request.session.get(‘username‘,False)

        return render(request,‘order.html‘,{‘username‘:username})

    else:

        return redirect(‘/login/‘)

oreder.html

1

2

3

<body>

{{username}}

</body>

8、注销?

order.html

1

2

3

4

<body>

{{ username }}

<a href="/logout/">注销</a>    #加入注销跳转到logout函数处理

</body>

urls.py

1

2

3

4

5

6

7

8

from app01 import views

urlpatterns = [

    url(r‘^admin/‘, admin.site.urls),

    url(r‘^$‘, views.index),

    url(r‘^order/$‘, views.order),

    url(r‘^login/$‘, views.login),

    url(r‘^logout/$‘, views.logout),    #加一个logout

]

views.py

1

2

3

def logout(request):

    del request.session[‘is_login‘]

    return redirect(‘/login/‘)

五、cookie超时时间

settings.py

1

SESSION_COOKIE_AGE = 5    #单位:秒

session也有

1

2

3

4

5

request.session.set_expiry(value)

* 如果value是个整数,session会在些秒数后失效。

* 如果value是个datatime或timedelta,session就会在这个时间后失效。

* 如果value是0,用户关闭浏览器session就会失效。

* 如果value是None,session会依赖全局session失效策略。

更多

https://docs.djangoproject.com/en/1.9/topics/http/sessions/

http://docs.30c.org/djangobook2/chapter14/

https://docs.djangoproject.com/en/1.9/ref/settings/#settings-sessions

来自为知笔记(Wiz)

Django--cookie&session

时间: 2024-11-08 20:24:18

Django--cookie&session的相关文章

Python学习day13 Django 分页/Session/Cookie

Created on 2017年5月3日 第1课:上节作业简介 鼠标放上表单后进入编辑模式-----需学习----CMDB里会学到模态对话框里--弹出对话框---对后台进行操作---方式:1 Form-用Submit页面整个刷新 2 用Ajax后台请求,通过Sessuss方式返回数据来控制模态对话框 第2课:本节内容1第3课:本节内容2 第4课:django自定义分页一 28minutes第5课:django自定义分页二 35minutes url(r'^index/(\d*)', views.

Django—Cookie and Session

一.Cookie Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密). 1. 应用 服务器可以利用Cookies包含信息的任意性来筛选并经常性维护这些信息,以判断在HTTP传输中的状态. Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用. 另一个重要应用场合是"购物车"之类处理.

Django之cookie,session,认证系统auth

COOKIE 与 SESSION 概念 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地:当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁”了. cookie虽然在一定程度上解决了“保持状态”的需求,但是由于cookie本身最大支持4096字节,以及cookie本身保存在客户

Django实现cookie&amp;session以及认证系统

COOKIE&SESSION 知识储备 由于http协议无法保持状态,但实际情况,我们却又需要"保持状态",因此cookie就是在这样一个场景下诞生. cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地:当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是"谁"了. cookie虽然在一定程度上解决了"保持状态"的需求,但是由于cookie本身最大支持4096字节,以及co

django之cookie &amp; session

(一)cookie 1.获取Cookie: request.COOKIES['key'] request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None) 参数: default: 默认值 salt: 加密盐 max_age: 后台控制过期时间 2.设置Cookie: rep = HttpResponse(...) 或 rep = render(request, ...) rep.set_cookie(key,v

Django组件-cookie,session

昨日内容回顾: json 轻量级的数据交换格式 在python 序列化方法:json.dumps() 反序列化方法:json.loads() 在JS中: 序列化方法:JSON.stringfy() 反序列化方法:JSON.parse() ajax $.ajax({ url:"", type:"", data:{}, // 默认contentType="urlencoded" success:function(data){ } }) 一.Djang

Django之Session与Cookie

目录 一.cookie Cookie与的session由来 什么是Cookie Cookie的原理 查看Cookie cookie与session的作用 二.Django中操作Cookie 获取Cookie 设置Cookie 删除Cookie 三.Session Session的由来 设置session 获取session 四.设置session与cookie的超时时间 删除当前的会话数据并删除会话的Cookie(推荐) 五.Django中Session相关方法 Session流程解析 Sess

8Python全栈之路系列之Django Cookie 与Sessi

Python全栈之路系列之Django Cookie与Sessi Cookies cookies是浏览器为Web服务器存储的一小段信息,每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies. 存取Cookies 创建Cookies def set_cookie(request):     # 创建HttpResponse对象     Response = HttpResponse()     # 创建cookie     Response.set_cookie("Cookie

Django9 Cookie&amp;Session

Cookie 获取Cookie request.COOKIES["key"] request.get_signed_cookie(key, default=RAISE_ERROR, salt="", max_age=None) # 参数 # default:默认值 # salt:加密盐 # max_age:后台控制过期时间 设置Cookie rep = HttpResponse(...) 或 rep = render(request, ...) rep.set_co

转:django中session的实现机制

转:www.jianshu.com 要理解session,首先要搞清楚cookie的概念.由于http是无状态的,服务器不能记住用户的信息状态,因此若由同一个客户端发起的多条请求,服务器不能辨别这些请求来自哪个用户.http无状态的限制为web应用程序的设计带来了许多不便,购物网站中的"购物车"功能就是一个很好的例子,当用户把商品放进购物车后,客户端必须要保存购物车的状态,否则当用户下次浏览网站时,购物车拥有的商品状态便不复存在.客户端和服务器必须有通信的媒介,方便服务器追踪客户端的状