一、视图
视图主要是用来接受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-type
是application/json
cookie是一种机制,与flask中一致,这里就不在详细描述了。
存储在客户端,不能跨域名访问。
response,set_cookie(key,value[,max_age=None,expires=None])
max_age
:整数 单位为秒,指定cookie过期时间;
设置为None:浏览器关闭失效,默认值expires
:指定过期时间,还支持datetime
或timedelta
,可以指定一个具体日期时间
expires=datetime.datetime(2030,1,1,2,3,4)
或
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)
request.COOKIES.get('username')
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