Django2.X-返回响应内容

视图函数是通过return方式返回,然后生成相应的网页内容呈现在浏览器上,return是Python的内置语法,用于设置函数的返回值,若要设置不同的响应方式,则需要使用Django内置的响应类。如图:

响应类型 说明
HttpResponse(‘Hello world’) 状态码200,请求已成功被服务器接受
HttpResponseRedirect(’/’) 状态码302,重定向首页地址
HttpResponseBadRequest(‘400’) 状态码301,永久重定向首页地址
HttpResponseNotFound(‘404’) 状态码404,网页不存在或网页的URL失效
HttpResponseForbidden(‘403’) 状态码403,没有访问权限
HttpResponseNotAllowed(‘405’) 状态码405,不允许使用该请求方式
HttpResponse(‘500’) 状态码500,服务器内容错误
JsonResponse({‘foo’:‘bar’}) 默认状态码200,响应内容为JSON数据
StreamingHttpResponse() 默认状态码200,响应内容以流式输出

不同的响应方式代表不同的HTTP状态码,其核心作用是Web Server服务器用来告诉浏览器当前网页发生了什么事,或者当前Web服务器的响应状态。上述的响应类主要来自于模块django.http,该模块是实现响应功能的核心。以HttpResponse为例,在MyDjango项目的index文件夹的urls.py和views.py中编写功能代码:

# index的urls.py
from django.urls import path
from . import views
urlpatterns = [
    # 定义首页的路由
    path('', views.index, name='index'),
]

# index的views.py
from django.http import HttpResponse
from django.shortcuts import render

def index(request):
    html = '<h1>Hello World</h1>'
    return HttpResponse(html, status=200)

视图函数index使用响应类HttpResponse实现响应过程。从HttpResponse的参数可知,第一个参数是响应内容,一般是网页内容或JSON数据,网页内容是以HTML语言为主的,JSON数据用于生成API接口数据。第二个参数用于设置HTTP状态码,它支持HTTP所有的状态码。
从HttpResponse的使用过程可知,如果生成网页内容,就需要将HTML语言以字符串的形式表示,如果网页内容过大,就会增加视图函数的代码量,同时也没有体现模板的作用。因此,Django在此基础上进行了封装处理,定义了函数render、render_to_response等。
render和render_to_response实现的功能是一致的。render_to_response自2.0版本以来已开始被弃用,但并不代表在2.0以上版本无法使用,只是大部分开发者都使用render。对render进行说明,语法如下:

render(request,template_name,context=None,content_type=None,status=None,using=None)

render的参数request和template_name是必须参数,其余参数都是可选参数,各个参数如下:

  • request: 浏览器向服务器发送的请求对象,包含用户信息、请求内容和请求方式等。
  • template_name: 设置模板文件名,用于生成网页内容。
  • context: 对模板上下文(模板变量)赋值,以字典个格式表示,默认情况下是一个空字典。
  • content_type: 响应内容的数据格式,一般情况下使用默认值即可。
  • status: HTTP状态码,默认为200。
  • using: 设置模板引擎,用于解析模板文件,生成网页内容。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章