Django框架之视图HttpRequest对象
本文主要是记录视图的HttpRequest对象属性、方法及示例。
概述
服务器接受http请求后,会根据报文创建httpRequest对象,包含所有请求中必须的数据;
视图方法的第一个参数就是HttpRequest对象;Django创建对象后,调用视图时传递给视图。
属性
path请求的完整路径(不包括域名和端口)
method 请求的方式,常用的方式有GET/POST
encodind 表示浏览器提交的编码方式
get 类似字典的对象,包含了get请求的所有参数
POST 类似字典的对象,包含了post请求的所有参数
FILES 类似字典的对象,包含了所有上传的文件
COOKIES 字典,包含所有的cookie
session 类似字典的对象,表示当前会话
示例:
def get_attributes(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(attributes)
效果:
方法
is_ajax() :如果是通过XMLHttpRequest发起的,返回True。
QuerDict对象:request对象中的GET、POST都属于QueryDict对象。
获取参数方法
get() 根据键获取值,只能获取一个值。
getlist() 将键的值以列表的形式返回,可以获取多个值。
GET属性
设置路由
path(getParam1, views.get_param1, name=getParam1), path(getParam2, views.get_param2, name=getParam2),
获取单个值
获取浏览器get传递的单个参数
请求地址
视图方法
def get_param1(request):
"""获取GET请求参数方法1 使用get方法 """
a = request.GET.get(a)
b = request.GET.get(b)
c = request.GET.get(c)
return HttpResponse(a + : + b + : + c)
同属性多个值
请求地址
视图方法
def get_param2(request):
"""获取GET请求参数方法2 使用getlist方法 """
a = request.GET.getlist(a)
a1 = a[0]
a2 = a[1]
b = request.GET.get(b)
return HttpResponse(a1 + : + a2 + : + b)
POST属性
设置路由
path(postParam, views.post_param, name=postParam), path(storeParam, views.store_param, name=storeParam),
设置form表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>POST提交测试</title>
</head>
<body>
<h2>学生信息登记</h2>
<form action="/myapp/storeParam" method="post">
名称:<input type="text" name="name"><br>
性别:
<input type="radio" name="gender" value="False">男
<input type="radio" name="gender" value="False">女
<br>
年龄:<input type="text" name="age">
<br>
爱好:
<input type="radio" name="hobby" value="足球">足球
<input type="radio" name="hobby" value="篮球">篮球
<input type="radio" name="hobby" value="乒乓球">乒乓球
<br>
描述:<textarea name="desc" id="" cols="30" rows="10"></textarea>
<br>
<input type="submit" value="提交">
</form>
</body>
</html>
视图方法
def post_param(request):
""" 显示form表单页面 进行post提交 """
return render(request, myapp/postTest.html)
def store_param(request):
""" 获取POST请求参数方法 """
name = request.POST.get(name)
gender = request.POST.get(gender)
age = request.POST.get(age)
hobby = request.POST.get(hobby)
desc = request.POST.get(desc)
print(名称: + name)
print(性别: + 男 if gender else 女)
print(年龄: + age)
print(爱好: + hobby)
print(描述: + desc)
return HttpResponse(学生信息登记)
表单填写提交后,可通过命令行查看执行情况。
