- HttpRequest 对象
- HttpResponse 对象
① HttpResponse 对象
在 django.http 模块中定义了 HttpResponse 对象的 API。
属性及方法:
- content:表示返回的内容,字符串类型;
- charset:表示 response 采用的编码字符集,字符串类型;
- status_code:响应的 HTTP 响应状态码;
- init:使用页内容实例化 HttpResponse 对象;
- write(content):以文件的方式写;
- flush():以文件的方式输出缓存区;
- set_cookie(key, value='', max_age=None, expires=None):
设置 Cookie
key、value 都是字符串类型;
max_age 是一个整数,表示在指定秒数后过期;
expires 是一个 datetime 或 timedelta 对象,会话将在这个指定的日期/时间过期;
注意:datetime 和 timedelta 值只有在使用 PickleSerializer 时才可序列化;
max_age 与 expires 二选一,
如果不指定过期时间,则关闭浏览器就实效,
5. delete_cookie(key):删除指定的 key 的 Cookie,如果 key 不存在则什么也不会发生。
有关 cookie 的例子:
②HttpResponse 的子类
JsonResponse :返回 json 数据
- 帮助用户创建 JSON 编码的响应
- 参数 data 是字典对象
- JsonResponse 的默认 Content-Type 为 application/json
简写函数:
- render:模版渲染;
- redirect:重定向,服务器端跳转,结合 reverse 方法使用;
状态保持:
- http 协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态;
- 客户端与服务器端的一次通信,就是一次会话实现状态保持的方式:在客户端或服务器端存储与会话有关的数据;
- 存储方式包括 cookie、session,会话一般指 session 对象;
- 使用 cookie,所有数据存储在客户端,注意不要存储敏感信息;
- 推荐使用 session 方式,所有数据存储在服务器端,在客户端 cookie 中存储 session_id;
- 状态保持的目的是在一段时间内跟踪请求者的状态,可以实现跨页面访问当前请求者的数据;
- 注意:不同的请求者之间不会共享这个数据,与请求者一一对应。
启用 session
在 settings.py 文件中
使用 session
- 启用会话后,每个 HttpRequest 对象将具有一个 session 属性,它是一个类字典对象;
- get(key, default=None):根据键获取会话的值;
- clear():清楚所有会话;
- flush:删除当前的会话数据并删除会话的 Cookie;
- del request.session['member_id']:删除会话。
用户登录例子:
续
续
会话过期时间
- set_expiry(value):设置会话的超时时间:
如果没有指定,则两个星期后过期;
如果 value 是一个整数,会话将在 values 秒没有活动后过期;
如果 value 是一个 imedelta 对象,会话将在当前时间加上这个指定的日期/时间过期;
如果 value 为 0,那么用户会话的 Cookie 将在用户的浏览器关闭时过期;
如果 value 为 None,那么会话永不过期;
settings.py 文件中的配置: