Django-5-会话

一、视图

视图主要是用来接受WEB请求,并做出响应。
从前面的使用可以看到,视图就是一个函数。

1.1 HttpRequest

服务器在接收到Http请求后,会根据报文创建HttpRequest对象。
视图中的第一个参数就是HttpRequest。
对象Django框架接收到http请求之后,会将http请求包装为HttpRequest对象,之后传递给视图。

1.1.1 常用属性

  • path:请求的完整路径

  • method:请求的方法,常用GET,POST

  • GET类似字典的参数,包含了get的所有参数

  • POST类似字典的参数,包含了post所有参数

  • FILES:类似字典的参数,包含了上传的文件

  • COOKIES:字典,包含了所有COOKIE

  • session:类似字典,表示会话

  • META[REMOTE ADDR]

1.1.2 方法

is_ajax()判断是否是ajax(),通常用在移动端和JS中
get_full_path()返回包含参数字符串的请求路径

1.1.3 QueryDict:类字典的对象

类似字典的数据结构。与字典的区别:可以存在相同的键QueryDict中数据获取方式
dict['uname']dict.get('uname')
获取指定key对应的所有值dict.getlist('uname')

1.1.4 参考

def get_all_person(request):
    print(request)  # <WSGIRequest: GET '/request/?name=zhangsan'>
    print(request.method)  # 请求方法
    print(request.GET)  # GET参数
    print(request.GET['name'])  # 不存在就报错
    print(request.GET.get("name"))  # 不存在返回None
    print(request.GET.getlist('name'))  # 如果有多个name的值,也会全部得到
    print(request.path)

    return HttpResponse("ok")

1.2 HttpResponse

服务器返回给客户端的数据
HttpResponse由程序员自己创建:
1)不使用模板,直接调用HttpResponse(),返回HttpResponse对象

2) 调用模板,进行渲染
  使用render(request,template_name[,context])

  • request:请求体对象

  • template_name:模板路径

  • context:返回的字典数据

1.2.1 属性

  • content:返回的内容

  • charset :编码格式

  • status_code:响应状态码(2xx,3xx,4xx,5xx)

1.2.2 方法

  • write(xxx) 直接写出文本

  • flush()冲刷缓冲区

  • set_cookie(key,value='xxx',max_age=None)设置cookie

  • delete_cookie(key)删除cookie

1.2.3 HttpResponse子类

HttpResponseRedirect

响应重定向:可以实现服务器内部跳转

return HttpResponseRedict('/grade/2030' )

使用的时候推荐使用反向解析

JsonResponse

返回Json数据的请求,通常用在异步请求上

JsonResponse(dict)

返回json数据时,Content-typeapplication/json

二、cookie

cookie是一种机制,与flask中一致,这里就不在详细描述了。
存储在客户端,不能跨域名访问。

2.1 设置cookie (使用response设置)

response,set_cookie(key,value[,max_age=None,expires=None])

max_age:整数 单位为秒,指定cookie过期时间;
设置为None:浏览器关闭失效,默认值
expires:指定过期时间,还支持datetimetimedelta,可以指定一个具体日期时间

expires=datetime.datetime(203011234)

datetime.datetime.now() + datetime,timedelta(days=10)

注意:max_age和expries两个选一个指定

response.set_cookie('username',username,max_age=1)
response,set_cookie('username',username1,expires=d)

2.2 获取cookie(使用request获取)

request.COOKIES.get('username')

2.3 删除cookie(使用response删除)

response.delete_cookie('username')

三、Session

Session存储在服务器,但是依赖于Cookie

3.1 启用session

在settings中

INSTALLED_APPS:'django.contrib.sessions'

MIDDLEWARE:'django.contrib.sessions.middleware.SessionMiddleware'

3.2 设置Sessions值 (使用request设置)

request.session['user_id'] = user.id
request.session.set_expiry(86400# 设置过期时间

3.3 获取Sessions值

get(key,default=None#根据键获取会话的值
username = request.session.get("user_id")
#或
session_name = request.session["session_name"]

3.4 删除Sessions值

#获取当前请求的session的key
session_key = request.session.session_key
del request.session[session_key]

request.session.delete(session_key)

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

3.5 clear()

清除所有会话


原文始发于微信公众号(Python之家):Django-5-会话

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/198190.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!