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传递的单个参数

请求地址

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值