本文主要是记录视图的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传递的单个参数
请求地址
http://127.0.0.1:8000/myapp/getParam1?a=1&b=2&c=3
视图方法
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)
同属性多个值
请求地址
http://127.0.0.1:8000/myapp/getParam2?a=1&a=2&b=3
视图方法
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('学生信息登记')
表单填写提交后,可通过命令行查看执行情况。