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(学生信息登记)

表单填写提交后,可通过命令行查看执行情况。

经验分享 程序员 微信小程序 职场和发展