首页 > 其他分享 >20、Django-会话-cookie和session-2

20、Django-会话-cookie和session-2

时间:2024-07-09 22:46:04浏览次数:10  
标签:username set 20 -- request session cookie

session是在服务器上开辟一段空间用于保留和服务器交互时的重要数据

实现方式:
  -- 使用session需要在浏览器客户端启动cookie、且在cookie中存储session
  -- 每个客户端都可以在服务器端有一个独立的session
  -- 注意:不同的请求者之间不会共享这个数据、与请求者一一对应
  
  
  

在Django中的配置-一般默认的配置、没有就添加

--开启session

setting.py
-------------------------------------------------------
INSTALLED_APPS = [
     ..........
    'django.contrib.sessions',
    .........
]

#中间件
MIDDLEWARE = [
    ......
    'django.contrib.sessions.middleware.SessionMiddleware',
    ................
]

 

使用session

session对象是一个类似与字典的SessionStore类型的对象、可以用类似于字典的方式进行操作

-- session能够存储:字符串、整型、字典、列表等

1、保存session的值到服务器:
  -- request.session['key'] = value
  
2、获取session的值
  -- value = request.session['key']
  -- value = request.session.get('KEY', 默认值) -- 推荐使用这种方法取值

3、删除session
  -- del request.session['key']

注意:在django中session默认的缓存是使用数据库保存的、所以要先迁移数据库、不然会报:
-- django.db.utils.OperationalError: no such table: django_session
主路由:urls.py
----------------------------------------
from django.contrib import admin
from django.urls import path
from django.urls import include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('cs/', include('cs_app.urls'), name='cs_app'),
]
-----------------------------------------------------------
子路由:urls.py
----------------------------------------------------
from django.urls import path
from cs_app.views import *

urlpatterns = [
    path('set_cookies/', set_cookie, name='set_cookies'),
    path('get_cookies/', get_cookie, name='get_cookies'),
    path('set_session/', set_session, name='set_session'),
    path('get_session/', get_session, name='get_session'),
]
--------------------------------------------------------------

views.py
----------------------------------------------------------------------
from django.http import HttpResponse
from django.shortcuts import render


#保存cookie
def set_cookie(request):
    # response = render(request, 'set_cookie.html')
    # response.set_cookie('username', 'zhangsan', max_age=3600)
    # return response

    resp = HttpResponse('set cookie is ok')
    resp.set_cookie('username', 'xiaoxin', max_age=3600)
    return resp

#取cookie
def get_cookie(request):
    username = request.COOKIES.get('username')
    #username = request.COOKIES['username']
    return HttpResponse('username is %s' % username)


#保存session�存session = get_cookie()
def set_session(request):
    request.session['username'] = 'ctx'
    return HttpResponse('set session is ok')


#取session
def get_session(request):
    username = request.session.get('username')
    return HttpResponse('username is %s' % username)
------------------------------------------------------------------------

#记得先迁移数据库
-- python .\manage.py makemigrations
-- python .\manage.py migrate

 

 

session的相关配置

在setting.py中的配置
---------------------------------------------------------------
1、SEESION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2
  -- 作用是指定sessionid在cookies中的保存时长(默认是2周)
   
2、SESISION_EXPIRE_AT_BROWSER_CLOSE = True
  -- 设置只要关闭浏览器时、session就会失效(默认为False)
    

 

删除session

可以定时做删除过期的seesion
  -- python3 manage.py clearsessions

 

标签:username,set,20,--,request,session,cookie
From: https://www.cnblogs.com/littlecc/p/18180870

相关文章

  • 19、Django-会话-cookie和session-1
    会话定义:--从打开浏览器访问一个网站开始到关闭浏览器为止、称之为一次会话--http协议是无状态的、导致会话状态难以保持cookie和session就是为了保持会话的技术cookies:--保存在客户端浏览器上的存储空间--查看cookie:--chrom:开发者工具-》Application-......
  • IEC62056标准体系简介-2.IEC62056标准体系及对象标识系统(OBIS)
     1. IEC62056标准体系        IEC62056标准体系目前共包括六部分,见图1:第61部分:对象标识系统第62部分:接口类第53部分:COSEM应用层第46部分:使用HDLC(HighLevelDataLinkControl)协议的数据链路层第42部分:面向连接的异步数据交换的物理层服务和过程第21部分:直接本地......
  • GoLand 2024 for Mac GO语言集成开发工具环境
    Mac分享吧文章目录效果一、下载软件二、开始安装1、双击运行软件(适合自己的M芯片版或Intel芯片版),将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功3、打开访达,点击【文稿】。将安装包内的【ja-netfilter】文件夹拖到文稿中4、填写内容,修改用......
  • 20240708比赛总结
    T1分糖果https://gxyzoj.com/d/hzoj/p/3752因为是三的倍数,所以按余数分为三种情况,分别是:3个0,3个1,3个2,012显然,当012的组数超过2时,就会出现3组相同余数的,所以枚举012的组数即可代码:#include<cstdio>#include<algorithm>usingnamespacestd;intn,a[100005],cnt[3],b[3][1......
  • 2024/7/9 noip模拟鳃
    T130pts教训:存图双向边数组要开2倍(就是这么简单!)还害得我调了半个小时才发现,改后accode:usingnamespacestd;intn,a,b,anode,bnode;constintmaxn=1e6+10;structedge{ intto,next;}e[maxn];intnodeflag=-1;inthead[maxn],siz[maxn],cnt,ans[maxn];voidadd......
  • 2017年,我成为了技术博主
    2017年9月,我已经大三了。>>上一篇(爪哇,我初窥门径)我大二学了很多java技术,看似我一会就把javaweb/ssh/ssm这些技术栈给学了。这些技术确实不难,即便是我,我都能学会,门槛并不高。但是,这也不是能随便百度学学,10分钟就懂了,学会了。从理解技术的用途,再到学习用法,再到实践,学一个也要3......
  • [CSAWQual 2019]Web_Unagi XXE漏洞练习题
    题目地址:BUUCTF在线评测这道题就是简单的xxe漏洞的注入。进来之后我们进行一个信息收集,在upload下可以看到有个here的超链接。点进去之后得到了如下的一些信息。可以猜到是需要我们利用文件上传包含xxe漏洞利用来得到flag。<?xmlversion='1.0'?><!DOCTYPEusers[<!ENT......
  • 洛谷P1308 [NOIP2011 普及组] 统计单词数C语言
    #include<stdio.h>#include<string.h>#include<ctype.h>intmain(){charcheck[11];charstr[1000001];intf_num=0;intcount=0;inti=0;intj=0;intp=1;gets(check);gets(str);......
  • 2024年06月CCF-GESP编程能力等级认证Python编程三级真题解析
    本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。一、单选题(每题2分,共30分)第1题小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?()A.1B.2C.3D.4答案:C第......
  • 20240709比赛总结
    T1超市抢购https://gxyzoj.com/d/hzoj/p/3765仔细读懂数据生成器,就能看出来,实际上物品肯定是够用的因为只能从右向左搬运物品,所以我们只需要对于每一个i,i+1的间隔,考虑有多少个物资需要从右边搬到左边去,把这个贡献累加即可代码:#include<cstdio>#include<algorithm>#define......