返回顶部
首页 > 资讯 > 精选 >Django状态保持搭配与存储如何实现
  • 607
分享到

Django状态保持搭配与存储如何实现

2023-06-30 18:06:49 607人浏览 八月长安
摘要

本篇内容主要讲解“Django状态保持搭配与存储如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“DjanGo状态保持搭配与存储如何实现”吧!为什么需要状态保持因为通常浏览器请求服务器是 无

本篇内容主要讲解“Django状态保持搭配与存储如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“DjanGo状态保持搭配与存储如何实现”吧!

为什么需要状态保持

因为通常浏览器请求服务器无状态 的,一次用户请求时,浏览器、服务器无法知道之前这个用户做过什么,每次请求都是一次新的请求。

无状态原因:浏览器与服务器是使用Socket套接字进行通信的,服务器将请求结果返回给浏览器之后,会关闭当前的Socket连接,而且服务器也会在处理页面完毕之后销毁页面对象。

因此可以使用状态保持来实现保持用户浏览的状态,比如用户是否登录过,浏览过哪些商品等

如何实现状态保持

实现状态保持主要有两种方式:

  • 在客户端存储信息使用Cookie

  • 在服务器端存储信息使用Session

Cookie

✨ Cookie的工作原理

由于Http是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?

就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。

✨ Cookie的特点

  • Cookie是由服务器生成,存储在浏览器端的一小段文本信息,以键值对方式进行存储。

  • 通过浏览器访问一个网站时,会将本地存储的跟网站相关的所有cookie信息发送给该网站的服务器。

  • Cookie是基于域名安全的。

  • Cookie是有过期时间的,如果不指定,默认关闭浏览器之后cookie就会过期。

✨ Cookie与django服务器执行流程

Django状态保持搭配与存储如何实现

配置Cookie

通过 HttpResponse 对象中的 set_cookie 方法来设置cookie。

HttpResponsse.set_cookit(sookie名, value=cookie值, max_age=cookie有效期)

写法: 设置存储的键值,设置存储事件

def cookie(request):    response = HttpResponse('ok')    response.set_cookie('make', 'golang')  # 临时cookie    response.set_cookie('luxor', 'PHP', max_age=3600)  # 有效期一小时    # max_age 单位为秒, 默认为None. 如果是临时cookie, 可将max_age设置为None.

读取Cookie

可以通过 HttpResponse 对象的 COOKIES 属性来读取本次请求携带的cookie值。request.COOKIES为字典类型

def cookie(request):    cookie1 = request.COOKIES.get('make')    print(cookie1)    return HttpResponse('OK')

Session

Django完全支持也匿名会话,简单说就是使用跨网页之间可以进行通讯,比如显示用户名,用户是否已经发表评论。session框架让你 存储和获取访问者的数据信息 ,这些信息保存在服务器上(默认是数据库中),以 cookies 的方式发送和获取一个包含 session ID的值,并不是用cookies传递数据本身。

✨ Session的特点:

  • 在服务器端进行状态保持的方案就是Session。

  • session是以键值对进行存储的。

  • session依赖于cookie。

  • session也是有过期时间,如果不指定,默认两周就会过期。

✨ Session与django服务器执行流程

Django状态保持搭配与存储如何实现

启用Session

编辑 settings.py 中的一些配置

MIDDLEWARE_CLASSES 确保其中包含以下内容

'django.contrib.sessions.middleware.SessionMiddleware',

✨ 存储数据库

存储在数据库中,如下设置可以写,也可以不写,这是默认存储方式

SESSION_ENGINE='django.contrib.sessions.backends.db'

如果存储在数据库中,需要在项 INSTALLED_APPS 中安装Session应用。

'django.contrib.sessions',

这些是默认启用的。如果你不用的话,也可以关掉这个以节省一点服务器的开销。

数据库中的表如图所示

Django状态保持搭配与存储如何实现

由表结构可知,操作Session包括三个数据:键,值,过期时间。

✨ 本地缓存

存储在本机内存中,如果丢失则不能找回,比数据库的方式读写更快。

SESSION_ENGINE='django.contrib.sessions.backends.cache'

✨ 混合存储

优先从本机内存中存取,如果没有则从数据库中存取。

SESSION_ENGINE='django.contrib.sessions.backends.cached_db'

session使用

  • 创建模拟登录视图

    def testsession(request):    # 更新数据库的session数据    request.session['name'] = 'Shrimps'    request.session['age'] = 22    request.session['userid'] = 1024        return HttpResponse('Good')
  • 创建模拟主页视图

    from django.http import HttpResponsedef testIndex(request):# 查询主页的数据    userid = request.session.get('userid')    name = request.session.get('name')    if userid:        print('登陆过')        return HttpResponse(f'Hello - {name} ')    else:        print('未登录')        return HttpResponse('未登录')
  • 登录后访问主页

    Django状态保持搭配与存储如何实现

在这里我是定义时间事件 所以才会显示晚上好

# 代码如下 - (在 return HttpResponse('Good') 之前执行)# 判断当前时间    now_time = datetime.datetime.now().strftime('%H')    now_time = int(now_time)    if now_time > 12 and now_time < 18:        now_time = '下午好'    elif now_time < 12:        now_time = '早上好'    else:        now_time = '晚上好'

Session操作

通过HttpRequest对象的session属性进行会话的读写操作。

1) 以键值对的格式写session。

request.session['键']=值

2)根据键读取值。

request.session.get('键',默认值)

3)清除所有session,在存储中删除值部分。

request.session.clear()

4)清除session数据,在存储中删除session的整条数据。

request.session.flush()

5)删除session中的指定键及值,在存储中只删除某个键及对应的值。

del request.session['键']

6)设置session的有效期

request.session.set_expiry(value)

value规则:

  • 如果value是一个整数,session将在value秒没有活动后过期。

  • 如果value为0,那么用户 session的Cookie将在用户的浏览器关闭时过期。

  • 如果value为None,那么session有效期将采用系统默认值, 默认为两周,可以通过在 settings.py 中设置SESSION_COOKIE_AGE来设置全局默认值。

到此,相信大家对“Django状态保持搭配与存储如何实现”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Django状态保持搭配与存储如何实现

本文链接: https://lsjlt.com/news/330644.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Django状态保持搭配与存储如何实现
    本篇内容主要讲解“Django状态保持搭配与存储如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Django状态保持搭配与存储如何实现”吧!为什么需要状态保持因为通常浏览器请求服务器是 无...
    99+
    2023-06-30
  • Django状态保持搭配与存储的实现
    目录引子为什么需要状态保持如何实现状态保持Cookie✨ Cookie的工作原理✨ Cookie的特点✨ Cookie与django服务器执行流程配置Cookie读取CookieSe...
    99+
    2024-04-02
  • redis缓存如何与数据库保持一致状态
    确保 redis 缓存与数据库一致的方法包括:1. 被动一致性定期同步;2. 增量同步;3. 主动一致性(订阅数据库事件);4. 使用分布式事务。选择方法取决于数据滞后容忍度、性能要求和...
    99+
    2024-04-20
    redis
  • Vue如何实现页面状态保持页面间数据传输
    这篇文章主要为大家展示了“Vue如何实现页面状态保持页面间数据传输”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue如何实现页面状态保持页面间数据传输”这篇文...
    99+
    2024-04-02
  • vuex如何实现登录状态的存储以及未登录状态不允许浏览
    小编给大家分享一下vuex如何实现登录状态的存储以及未登录状态不允许浏览,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!导航守卫正如其名,vue-router``` 提供的导航守卫主要用来通...
    99+
    2024-04-02
  • vuex+axios如何实现登录验证并且保存登录状态
    小编给大家分享一下vuex+axios如何实现登录验证并且保存登录状态,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!第一步:安装axios 、vuex npm i -s axios npm...
    99+
    2024-04-02
  • react如何实现组件状态缓存
    这篇文章主要介绍“react如何实现组件状态缓存”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“react如何实现组件状态缓存”文章能帮助大家解决问题。一、安装第三方库npm i ...
    99+
    2023-07-05
  • Django如何与Java和Linux集成,实现最佳存储效果?
    Django是一个基于Python语言的Web框架,被广泛应用于Web应用程序开发。Django提供了许多便利的工具和库,使得开发者可以快速地构建高效、可靠的Web应用程序。但是,在实际应用中,Django需要与其他技术进行集成,以实现最佳...
    99+
    2023-08-28
    linux 存储 django
  • SpringBoot如何实现持久化登录状态获取
    目录SpringBoot 持久化登录状态获取1.编写登录的controller文件2.编写首页Controller逻辑3.运行测试,成功SpringBoot 实现登录登出,登录态管理...
    99+
    2024-04-02
  • Django和ASP存储:如何实现最佳性能?
    Django和ASP是两种流行的Web应用程序框架,它们都提供了强大的存储支持。在本文中,我们将探讨如何在这两个框架中实现最佳性能的存储方案。 数据库选择 Django和ASP都支持多种数据库,包括MySQL、PostgreSQL、S...
    99+
    2023-08-25
    存储 django git
  • Android自定义状态栏颜色与APP风格保持一致的实现方法
    我们知道iOS上的应用,状态栏的颜色总能与应用标题栏颜色保持一致,用户体验很不错,那安卓是否可以呢?若是在安卓4.4之前,答案是否定的,但在4.4之后,谷歌允许开发者自定义状态...
    99+
    2022-06-06
    方法 状态栏 app Android
  • vue-element如何实现动态换肤存储
    目录需要实现的效果原理总结需要实现的效果 选择颜色块或者颜色选择器切换网站主题色,选择主题后保存到本地,下次打开页面是缓存的主题色 原理 根据ElementUI官网的自定义主...
    99+
    2023-05-17
    vue element element换肤存储 动态换肤存储
  • 如何使用PHP、Spring和Django实现高效存储?
    随着互联网的迅猛发展,数据量的爆炸式增长已经成为常态。如何高效地存储和管理海量数据成为了每个开发者必须面对的问题。在开发过程中,我们通常会使用PHP、Spring和Django等框架来实现高效存储。本文将介绍如何使用这些框架来实现高效存储...
    99+
    2023-09-25
    存储 spring django
  • Django、Git和ASP存储:如何实现最佳开发实践?
    随着Web应用程序的快速发展,Django成为了许多开发者的首选框架。它简化了许多常见的Web开发任务,如URL路由、数据库集成、表单验证等。同时,Git作为一种强大的版本控制工具,可以帮助我们更好地管理代码的变化。ASP存储则是一种用于...
    99+
    2023-08-25
    存储 django git
  • Python 与 Apache 存储结合,如何实现高效数据存储?
    在现代科技领域,数据处理和存储是非常重要的问题。Python 作为一种高级编程语言,广泛应用于数据科学和数据处理领域。同时,Apache 是一个广泛使用的开源软件基金会,提供了许多数据存储和处理工具。本文将介绍 Python 和 Apac...
    99+
    2023-11-01
    接口 apache 存储
  • Android开发中使用token如何实现维持登陆状态
    Android开发中使用token如何实现维持登陆状态?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是tokentoken(令牌)是一串唯一的字符串,通常由...
    99+
    2023-05-31
    android token roi
  • Html5 Canvas如何实现图片标记、缩放、移动和保存历史状态功能
    这篇文章主要介绍Html5 Canvas如何实现图片标记、缩放、移动和保存历史状态功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!效果预览动图是放cdn的,如果访问不了,可以登录在线尝试尝试: test.algbb...
    99+
    2023-06-09
  • 如何利用Kubernetes实现容器的持久化存储
    本篇内容主要讲解“如何利用Kubernetes实现容器的持久化存储”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何利用Kubernetes实现容器的持久化存储”吧!  可以说,容器化彻底改变了...
    99+
    2023-06-04
  • 如何在Storm中实现数据的持久化存储
    在Storm中实现数据的持久化存储通常可以通过以下几种方法: 使用数据库:可以将Storm处理的数据存储到关系型数据库(如MySQ...
    99+
    2024-04-09
    Storm
  • 在Unity中如何实现数据的持久化存储
    在Unity中实现数据的持久化存储可以通过以下几种方式: PlayerPrefs:Unity自带的一种简单的持久化存储方案,可以存...
    99+
    2024-05-09
    Unity
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作