1011.Django状态保持以及表单
一、session保持状态
状态保持:
1. http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态;
2. 客户端与服务器端的一次通信,就是一次会话实现状态保持的方式:在客户端或服务器端存储与会话有关的数据;
3. 存储方式包括cookie、session,会话一般指session对象;
4. 使用cookie,所有数据储存在客户端,注意不要存储敏感信息;
5. 使用session方式,所有数据在服务器端,在客户端cookie中存储session_id;
6. 状态保持的目的是在一段时间内跟踪请求者的状态,可以实现跨页面访问当前请求者的数据;
--注意:不同的请求者之间不会共享这个数据,与请求者一一对应。

使用session:启用会话后,每个HttpResponse对象将具有一个session属性,它是一个类字典对象;
--get(key, default=None):根据键获得会话的值;
--flush():删除当前的会话数据并删除会话的Cookie。
用户登录状态例子:
在view.py文件中

1. 一个即可读又可写的类似于字典的对象,表示当前的会话;2. 在登录中使用request.session设置一个登录的信息; 3. 在主页面中获取设置的值,然后转给模板; 4. 使用request.session.flush()清除会话数据。
url路由配置及模板内容

会话过期时间:
-- set_expiry(value):设置会话的超时时间;
-- 如果没有指定,则两个星期后过期;
-- 如果value是一个整数,会话将在values秒没有活动后过期;
-- 如果value是一个imedelta对象,会话将在当前时间加上这个指定的日期/时间过期;
-- 如果value为0,那么用户会话的Cookie将在用户的浏览器关闭是过期;
-- 如果value为None,那么会话永不过期。

会话过期时间在setting文件中的配置:
1. 是否关闭浏览器使用Session过期,默认是False--------SESSION_EXPIRE_AT_BROWSER_CLOSE = Flase
2. 是否每次请求都保存Session,默认修改之后才保存--------SESSION_SAVE_EVERY_REQUEST = False
3. Session的cookie失效日期,默认是2周--------SESSION_COOKIE_AGR = 1209600
以上,可以不进行配置,那么不配置就都是默认的选项。
登录注册实现思路:

登录注册第一步------创建模型生成数据表:
models.py文件创建-迁移-保存:

python manage.py makemigrations
python manage.py migrate

二、django的form表单
form表单的引用:
登录页面和注册页面都会到form表单来交替数据,当数据提交到后台后,需要在视图函数中去验证数据的合法性。django中提供了一个form表单的功能,这个表单可以用来验证数据的合法性还可以用来生成HTML代码。
关于django form表单的使用,需要注意以下几点:
1. 创建一个form.py的文件,放在制定的app当中,然后再里面写表单;
2. 表单是通过类实现的,继承自forms.Form,然后再里面定义要验证的手段;
3. 在表单中,创建字段跟模型是一模一样的,但是没有null=True或者blank=True等这几种参数了,有的参数是required =True/False;
4. 使用is_valid()方式可以验证用户提交的数据是否合法,而且HTML表单元素的name必须和django中的表单的name保持一致,否则匹配不到;
5. is_bound属性:用来表示form否是绑定了数据,如果绑定了,则返回Ture,否则返回False;
6. cleaned_data:这个是在is_valid()返回True的时候,保存用户提交上来的数据。
form表单例子:
创建forms.py文件,创建一个AddForm的类:

模板及视图函数:

注册的form表单:
创建forms.py文件,创建注册的表单

form表单中的一些参数说明:
1. max_length:最大长度;
2. min_length:最小长度;
3. widget:负责渲染网页上HTML表单的输入元素和提取提交的原始数据;
4. attrs:包含渲染后的Widget将要设置的HTML属性;
5. error_messages:报错信息。
注:虽然form可以生成前端页面,但这个功能实际用的少,主要是用form表单的验证功能。
注册的视图函数:
1. 将RegisterForm类生成实例,转入模板渲染前端页面;
2. 将获取到的参数传入RegisterForm类,用is_valid()方式验证提交数据的合法性,用cleaned_data获取单个数据对象值。

三、登录注册案例
1011.Django状态保持以及表单的更多相关文章
- Django组件之Form表单
一.Django中的Form表单介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入 ...
- Python的Django框架中forms表单类的使用方法详解
用户表单是Web端的一项基本功能,大而全的Django框架中自然带有现成的基础form对象,本文就Python的Django框架中forms表单类的使用方法详解. Form表单的功能 自动生成HTML ...
- 第三百一十一节,Django框架,Form表单验证
第三百一十一节,Django框架,Form表单验证 表单提交 html <!DOCTYPE html> <html lang="en"> <head& ...
- Django框架 之 Form表单和Ajax上传文件
Django框架 之 Form表单和Ajax上传文件 浏览目录 Form表单上传文件 Ajax上传文件 伪造Ajax上传文件 Form表单上传文件 html 1 2 3 4 5 6 7 <h3& ...
- Django 学习第十天——状态保持及表单
状态保持: 1.http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态 2.客户端与服务器端的一次通信,就是一次会话实现状态保持的方式:在客户端或服务器端存储与会话有关的数据 3.存 ...
- Django框架基础知识11-会话状态保持及表单
浏览器存储cookie的方式不太安全,那有没有更好些的来存储登入状态的方式呢??? 状态保持----cookie和session: 状态保持: 1.http协议是无状态的:每次请求都是一次新的请求,不 ...
- Django——11 状态保持 form表单 登陆注册样例
Django 状态保持 用户状态例子 实现注册登陆实例 django forms 表单的使用 注册功能 登陆功能 状态保持cookie和session 1.http协议是无状态的:每次请求都是一次 ...
- 3 django系列之Form表单在前端web界面渲染与入库保存
author: 温柔易淡(Leo),欢迎技术交流与拍砖 preface 我们在前端写表单的时候,其实可以使用django自带的forms功能来实现,特别是在处理 修改已经存在数据 的场景特别好用,下面 ...
- js判断checkbox状态,处理表单提交事件
功能描述:手机网页需要一个投票功能,通过form的post提交.有5-20个checkbox选项,至少选一项,至多选三项.需要在用户点击提交按钮前,判断checkbox的状态是否符合条件,符合则提交到 ...
- 3.django笔记之form表单
作者:刘耀 瞎copy伸手党 我在诅咒你. Django的form的作用: 1.生成html标签 2.用来做用户提交的验证 3.可以和models一起使用(modelform) 一.form基础 工程 ...
随机推荐
- Word List 2023
Word List 2023 记录 2023 年阅读论文时遇到的单词 wildcard 通配符 wildcard predicate 通配符谓词 maturation 成年过程:长大成人 ever-i ...
- serializers序列化函数简单入门
1. 创建Django项目和应用程序 首先,我们需要创建一个Django项目和一个Django应用程序.如果你已经有了Django项目和应用程序,请跳过这一步. $ django-admin star ...
- vue本地运行项目使用iframe的跨域问题
1.获取iframe中的window对象 为了兼容大多数浏览器,应使用iframeElement.contentWindow来获取 https://blog.csdn.net/xiongzhengxi ...
- 权昌TSC条码打印机终极使用教程与开发版本代码大全
本教程使用的打印机型号:TSC TTP-244 Plus 官方文档 一.TSC打印机安装 1.机器安装 根据官方快速安装指南安装打印机,此处不详细说明,也可以看视频教程,唯一需要注意的地方就是碳带的方 ...
- python连接Oracel、postgreSQL、SQLserver、Mysql、mongodb、redis等常用数据库方法汇总
python对接常用数据库 python有着极其丰富的第三方的库,如此强大的python语言操作各大数据库,不管你使用的关系型数据库是oracle,mysql, sqlserver,还是关系型数据库r ...
- 假设业务需要,在页面一屏中一次性展示大量图片(100张),导致img组件同时发起大量的请求,导致浏览器性能被消耗殆尽,页面卡死。怎么优化?
1.所有图片先提供占位图2.懒加载思想3.使用队列的方式4.通过信号量的机制,结合队列.例如设置可用资源数为10,则保证同一时刻,只有10张图片正在请求,其它图片处于loading状态,任意图片请求完 ...
- 递归分批次插入数据(An I/O error occurred while sending to the backend报错解决方案)
//递归插入public void add(List<Object> all, long start, long limit){ //截取 List<Object> colle ...
- Mac10.13-10.15 下玩星际争霸1.16
星际争霸DMG 存储在城通网盘,下载后挂载,复制到 应用程序 里就可以玩了 1, ctfile://xturlDG9QOlg_V29WOwI8UzEKZQdjUWEOOFJ7VCEHYFIxBzlTY ...
- jadx 定位方法
目录 链接参数定位 链接参数定位 通过搜索请求链接中的参数来定位函数位置,如下图所示,请求链接为 https://www.python-spider.com/api/app1,app1为链接标识,可以 ...
- [530] C3 Rise Of Darkness Opcodez
[530] C3 Rise Of Darkness Client 00 SendProtocolVersion 01 MoveBackwardToLocation 02 Say 03 RequestE ...