HttpReqeust对象
阅读 (212803)
分享
一、作用
客户端给服务器传递数据所用
二、概述
- 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象
- 视图函数的第一个参数是HttpRequest对象
- HttpRequest对象中保存了客户端传递的数据
三、属性
-
path 请求的完整路径,不包含域名和端口
-
method 请求方式,常用的get和post
-
encoding 提交数据的编码格式
值:如果为None,表示使用浏览器默认的编码格式,一般为utf-8
-
GET 一个类似字典的对象,包含get请求方式的所有参数
-
POST 一个类似字典的对象,包含post请求方式的所有参数
如果表单提交失败 查看是否存在{% csrf_token %} 或者将Middleware中的csrf关闭
-
FILES 一个类似字典的对象,包含所有的上传文件
-
COOKIES 是一个标准的字典,包含了所有的cookie
-
session 一个类似字典的对象,表示当前会话信息,只有Django开启session服务后才会有该属性,默认是开启的
-
META 包含了http请求的所有header头信息
格式化后显示
def requestAttr(request): values = request.META.items() html = [] for k,v in values: html.append('<tr><td>{}</td><td>{}</td></tr>'.format(k,v)) # return HttpResponse('request属性') return HttpResponse('<table>%s</table>'%'\n'.join(html))
常用的key值
- REMOTE_ADDR 客户端IP地址
- HTTP_USER_AGENT 浏览器和系统的信息的字符串
- HTTP_REFERER 获取从哪里点击过啦的链接地址
-
示例
def index(request): #分析客户想干什么(客户给服务的数据) print(request.path) print(request.method) print(request.encoding) print(request.GET) print(request.POST) print(request.FILES) print(request.COOKIES) print(request.session) return HttpResponse("lucky is a good man")
四、方法
- get_full_path() 获取完整的请求(不包括域名和端口)
- get_host() 获取主机和端口
- is_ajax() 判断是否为ajax请求
五、QueryDict对象
-
说明
类似字典的对象,与字典的区别是可以有相同的键,request对象中的GET、POST属性都是QueryDict类型的对象
-
方法
-
get()
作用:根据键获取值
注意
- 只能获取键的一个值
- 如果有多个相同的键,则获取最后一个值
-
getlist()
request.GET.getlist(‘key’)
作用:根据键返回多个值的列表
-
六、GET属性
-
格式
request.GET
-
URL地址为
http://127.0.0.1:8000/lucky/?a=1&b=2&c=3
-
示例
def get1(request): if request.method == "GET": #获取客户端传递的数据 a = request.GET.get("a") b = request.GET.get("b") c = request.GET.get("c") return HttpResponse(a+b+c)
-
URL地址为
http://127.0.0.1:8000/lucky/?a=1&a=2&c=3
-
示例
def get2(request): if request.method == "GET": alist = request.GET.getlist("a") c = request.GET.get("c") return HttpResponse(alist[0]+alist[1]+c)
七、POST属性
-
注册界面 register.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>注册</title> </head> <body> <form action="/register/" method="post"> {% csrf_token %} 账号:<input type="text" name="account"><br/> 密码:<input type="password" name="password"><br/> 验证密码:<input type="password" name="yzm"><br/> <input type="submit" value="注册"> </form> </body> </html>
-
路由
re_path(r'register/', views.register),
-
视图
def register(request): if request.method == "GET": return render(request, "App/register.html") else: #获取客户端传递的数据 account = request.POST.get("account") password = request.POST.get("password") yzm = request.POST.getlist("yzm") print(account) print(password) print(yzm) return HttpResponse("注册成功")
需要
登录
才可以提问哦
: