1110. 状态保持以及表单

发布时间 2023-05-23 14:53:18作者: 興華

一、session保存状态

浏览器存储cookie的方式不太安全,那有没有更好些的来存储登入状态的方式呢? session!

状态保持:

1. http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态;

2. 客户端与服务端的一次通信,就是一次会话实现状态保持的方式:在客户端或者服务端存储与会话有关的数据;

3. 存储方式保护cookie、session,会话一般只session对象;

4. 使用cookie,所有数据存储在客户端,注意不要存储敏感信息;

5. 使用session方式,所有数据存储在服务端,在客户端cookie中存储session_id;

6. 状态保持的目的是在一段时间内跟踪请求者的状态,可以实现跨页面访问当前请求者的数据;

注意:不同的请求者之间不会共享这个数据,与请求者一一对应。

启用session

在setting.py文件中设置(默认是都有启用的)

注:使用session之前需要先执行makemigrations, migrate的模型映射文件命令,在数据可中有生成django_session的表格。

在启动会话后,每个HttpResponse对象将具有一个session属性,它是一个类字典对象

-get(key, default=None) : 根据键获取会话的值

- flush():删除当前的会话数据并删除会话的cookie

1. 一个即可读又可写的类似于字典的对象,表示当前会话;

2. 在登录中使用request.session设置一个登录的信息;

3. 在主页面中获取设置的值,然后传给模板;

4. 使用request.session.flush() 清除会话数据。

案例:

会话过期时间:

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

另setting.py文件中有关session的配置

二、登录注册案例

思路:

1. 创建模型生成数据表

登录一般需要用户名,密码以及电话号码或者邮箱扥信息;

  

2. 创建登录&注册模板(参考django form表单说明),

此处需要使用到form表单,一般采用html中的form表单进行登录&注册页面的数据提交,因数据提交后台后,需要在视图函数中去烟灶数据的合法性,所以可采用django中提供的form表单的功能,这个表单可以用来验证数据的合法性还可以用来生成HTML代码。

3. 创建视图函数

4. 配置url信息  

三、django的form表单

django form表单的使用:

1. 创建一个form.py文件,放在指定的app当中,然后在里面写表单;

2. 表单是通过类实现的,继承自forms.Form,然后在里面定义要验证的字段;

3. 在表单中,创建字段跟模型是一模一样的,但是没有null=True或者blank=True等这几种参数了,由的参数是required=Ture/False;

4. 使用is_valid()方法可以验证用户提交的数据是否合法,而且HTML表单元素的name必须和django中的表单的name保持一致,否则匹配不到;

5. is_bound属性:用来表示form是否绑定了数据,如果绑定了,则返回True,否则返回False;

6. cleaned_data:这个是在is_valid() 返回True的时候,爆粗男用户提交上来的数据。

diango form表单例子:

即可生成前端页面,也可用来验证数据的合法性。

注册的form表单:

form表单中的一些参数说明:

max_length 最大长度

min_length 最小长度

widget 复杂渲染网页上HTML表单的数据元素和提取提交的原始数据

attrs 包含渲染后的Widget将要设置的HTML属性

error messages  报错信息

注:虽然form可以生成前端页面,但这个功能实现用的少,主要是用form表单的验证功能

注册的视图函数: