Django视图层详解:HttpRequest与HttpResponse对象用法

阿橙
阿橙
发布时间:2026-10-15 | 4人浏览过
原创

本文深入解析Django框架中的视图层,重点讲解HttpRequest与HttpResponse两大核心对象。详细阐述GET、POST、body、path及method等请求属性的获取方式,并对比HttpResponse、render和redirect三种响应返回机制,帮助开发者掌握Django视图函数的编写规范。

视图层

视图函数(简称视图)是Django中处理Web请求并返回响应的Python函数。

视图返回的响应内容可以是HTML页面、404错误页、重定向链接、XML文档或图片等多种格式。

无论视图内部逻辑如何复杂,最终必须返回一个响应对象。视图代码通常放置在Python目录下的views.py文件中,但理论上只要位于Python路径中即可。

每个视图函数都需要返回一个HttpResponse对象,该对象封装了生成的响应内容。

视图层主要涉及两个核心对象:请求对象(request)和响应对象(HttpResponse)。

一、请求对象:HttpRequest对象(简称request)

以下介绍request对象中几个常用的属性。

1、GET属性

GET属性的数据类型为QueryDict,这是一个类似字典的对象,用于存储HTTP GET请求中的所有参数。

若存在相同的键,所有对应的值将被存入一个列表中。

取值格式为:对象.方法。

get()方法:返回字符串类型。如果该键对应多个值,则返回最后一个值。

def runoob(request):
    name = request.GET.get("name")
    return HttpResponse('姓名:{}'.format(name))

2、POST属性

POST属性的数据类型同样为QueryDict,用于存储HTTP POST请求中的所有参数。

该属性常用于处理HTML form表单,其中表单标签的name属性对应参数的键,value属性对应参数的值。

取值格式为:对象.方法。

get()方法:返回字符串类型。如果该键对应多个值,则返回最后一个值。

def runoob(request):
    name = request.POST.get("name")
return HttpResponse('姓名:{}'.format(name))

3、body属性

body属性的数据类型为二进制字节流,包含原生请求体中的参数内容。在HTTP协议中,GET请求没有请求体,因此body属性主要用于POST请求。

虽然HTTP中不常直接使用body,但在处理非HTTP格式报文(如二进制图片、XML、JSON等)时非常有用。

def runoob(request):
    name = request.body
print(name)
return HttpResponse("菜鸟教程")

4、path属性

path属性用于获取URL中的路径部分,其数据类型为字符串。

def runoob(request):
    name = request.path
    print(name)
    return HttpResponse("菜鸟教程")

5、method属性

method属性用于获取当前请求的方式,数据类型为字符串,且结果统一为大写形式。

def runoob(request):
    name = request.method
    print(name)
    return HttpResponse("菜鸟教程")

二、响应对象:HttpResponse对象

视图返回的响应主要有三种形式:HttpResponse()、render()和redirect()。

HttpResponse():用于返回纯文本,参数为字符串,其中可包含HTML标签以进行渲染。

def runoob(request):
# return HttpResponse("菜鸟教程")
return HttpResponse("<a href='http://https://www.runoob.com/>菜鸟教程</a>")

render():用于返回渲染后的文本。第一个参数为request,第二个参数为页面名称字符串,第三个参数为可选字典(用于向页面传递参数,键为页面参数名,值为视图中的变量名)。

def runoob(request):
    name ="菜鸟教程"
return render(request,"runoob.html",{"name":name})

redirect():用于重定向,跳转到新页面。参数为字符串,填写目标页面路径。通常用于form表单提交后跳转至新页面。

def runoob(request):
return redirect("/index/")

render和redirect函数均是对HttpResponse对象的封装:

  • render:底层返回的仍然是HttpResponse对象。
  • redirect:底层继承自HttpResponse对象。

本文介绍了Django框架中视图的基本用法,希望能为学习Django的读者提供帮助。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表