lxinghua

博客园 首页 新随笔 联系 订阅 管理

一、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获取单个数据对象值。

三、登录注册案例

posted on 2023-01-10 19:57  興華  阅读(31)  评论(0编辑  收藏  举报