Django框架-8

news/2024/11/23 20:09:17/

Session

对于敏感、重要的信息不能存在浏览器,也就不能使用cookie,如用户名、余额、等级、验证码等
信息 如何确保数据的安全性呢,那就是将数据保存在服务端。这就利用到session技术。
Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间
跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求
来自应用程序的 Web页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当
会话过期或被放弃后,服务器将终止该会话。

Session介绍

django项目默认启用Session: settings.py文件,在项MIDDLEWARE_CLASSES中启用Session中间件

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','urldemo.apps.UrldemoConfig',# 手动注册子应用'viewdemo.apps.ViewdemoConfig'
]

Session依赖于Cookie

所有请求者(三个不同用户)的Session都会存储在服务器中,启用Session后,会在Cookie中存储一个
sessionid,每次请求时浏览器都会将这个数据发给服务器,服务器在接收到sessionid后,会根据这个
值找出这个请求者的Session。 所以如果想要使用session,浏览器必须支持cookie,一般浏览器都会开
启cookie,除非是人为关闭

Session操作

def set_session(request):"""视图函数 ,测试session"""# 如name age gender higet  都是 从前端用户通过表单传过来的信息name = request.GET.get('name')age = request.GET.get('age')gender = request.GET.get('gender')higet = request.GET.get('higet')request.session['name'] =name # 以键值对的方 式设置sessionrequest.session['age'] = agerequest.session['gender'] = genderrequest.session['higet'] = higetreturn HttpResponse("设置session成功")
    path('set/session',set_session)

上面的代码完成后可以输入这个网址然后右击检查,然后再pycharm中的数据库中找到YmUzNTEwZjE5NWYzNDEzYzEyMGIwNTdkZjU5M2Y5NmVmZmIzYmYxNzp7Im5hbWUiOiJ4aWFvbWluZyIsImFnZSI6IjE4IiwiZ2VuZGVyIjoibmFuIiwiaGlnZXQiOiIxLjgzIn0=
最后在解码查看
http://127.0.0.1:8000/viewdemo/set/session?name=xiaoming&age=18&gender=nan&higet=1.83

获取Session的值

def get_session(request):username = request.session.get('username')password = request.session.get('password')print(username)print(password)return HttpResponse('获取到session的值')
path('get/session',get_session)

类视图

虽然一个视图处理用户的一个请求,但HTTP提供了多种请求方式(GET、POST、PUT等),用户
使用应用的某个功能时,该功能可能以任意一种方式发起请求,例如商品管理功能使用GET方式发起的
呈现商品列表的请求、使用POST方式发起的修改商品请求等。此时视图需要结合条件分支,对每种请
求方式分别进行处理。然而若所有请求方式的处理逻辑都定义在同一个视图中,视图很可能庞大且臃
肿。为了解决这一问题,Django设计了类视图

class Regist(views):def get(self,request):return HttpResponse('类视图,get请求')def post(self,request):return HttpResponse('类视图,post请求')
    path('class/register/',Regist.as_views())

错误视图

Django内置处理HTTP错误的视图,主要错误及视图包括

404错误:page not found视图
500错误:server error视图
400错误:bad request视图
403错误:permission_denied视图

如果想要看到错误视图,而不是错误调试信息的需要设置setting.py配置文件的调试开关设置为False,ALLOWED_HOSTS允许所有主机访问。

404错误及视图
将请求地址进行url匹配后,没有找到匹配的正则表达式,则调用404视图,这个视图会调用404.html的模板 进行渲染

404视图默认情况下定在’django.views.defaults.page_not_found’

django 自带404模板

视图传递变量request_path给模板,是导致错误的URL

自定义错误模板: 在项目的templates目录下创建一个名字叫404.html的模板文件: 当发生404错误时,404 视图会调用templates中的模板文件而不再调用自带的模板


http://www.ppmy.cn/news/722835.html

相关文章

笔记本win10更新无线服务器,win10系统笔记本无线网络找不到的解决方法

很多小伙伴都遇到过win10系统笔记本无线网络找不到的困惑吧,一些朋友看过网上零散的win10系统笔记本无线网络找不到的处理方法,并没有完完全全明白win10系统笔记本无线网络找不到是如何解决的,今天小编准备了简单的解决办法,只需要…

hp服务器的网络显示红叉,惠普笔记本白屏后重启后显示红叉网络信号联不上网的原因?...

满意答案 您好!感谢您选择惠普产品。 机器显示红叉通常是机器的无线服务或无线网卡驱动方面出现问题导致,建议您可以按下面的方法操作解决问题: 1、确认无线服务是否开启,方法:请您在开始菜单中点击“运行”&#xff0…

windows10无线网络未连接打红叉怎么办

一些windows10用户突然发现无线网络未连接,而且还打红叉,这种情况要怎么办呢?会出现这种情况很有可能是网卡驱动存在问题,你先打开更改适配器设置,看看是否有Wlan,没有的话就使用驱动软件下载对应的无线网卡驱动去安装…

如何使用ThinkPHP框架的路由功能进行URL路由?

路由是Web开发中非常重要的一部分,它决定了用户通过URL访问你的应用时所对应的处理方法。在ThinkPHP中,路由功能非常强大且易用,让我们一起来看看如何使用它吧! 首先,让我们先了解一些路由的基本概念。在ThinkPHP中&a…

茶油生产加工MES质量溯源平台源码(spring boot+mybatis+easyui+mysql+h5)

一、生产加工MES(Manufacturing Execution System,简称MES)是一种面向车间的生产过程管理与实时信息系统。它主要负责监控生产过程,管理生产资源,优化生产流程,提高生产效率和质量。MES系统需要与ERP系统、…

激活office时,提示CScript错误:无法找到ospp.vbs脚本引擎vbscript

你应该不是安装到C盘吧,你把office安装目录C:\Program Files\Microsoft Office\Office16或者Office15 复制到 你安装的Office目录下或者是kms激活指定的目录下,然后再激活试试。。 我刚刚也遇到一样的问题,随便试了一下就成功了。

神龙激活1

半个月变身计算机大神: http://www.yishimei.cn/?8i8hj

神龙版 (官方网站 下载)

免费黑客资料学习网站 [点击去往官网] http://www.yishimei.cn/network/319.html