本文概述
- 返回错误
- Django View HTTP装饰器
所有视图功能都是在Django应用的views.py文件中创建的。
Django查看简单示例
//views.py
import datetime# Create your views here.from django.http import HttpResponsedef index(request):now = datetime.datetime.now()html = "<
html>
<
body>
<
h3>
Now time is %s.<
/h3>
<
/body>
<
/html>
" % nowreturn HttpResponse(html)# rendering the template in HttpResponse
让我们逐步看一下代码。
首先, 我们将导入DateTime库, 该库提供一种获取当前日期和时间以及HttpResponse类的方法。
接下来, 我们定义一个视图函数索引, 该索引接受HTTP请求并进行响应。
使用urls.py中的URL映射时查看呼叫。例如
path('index/', views.index),
输出:
返回错误 Django提供了各种内置的错误类, 它们是HttpResponse的子类, 用于将错误消息显示为HTTP响应。下面列出了一些类。
类 | 描述 |
---|---|
HttpResponseNotModified类 | 它用于指定自用户的上一个请求以来(状态代码304)尚未修改页面。 |
HttpResponseBadRequest类 | 它的行为类似于HttpResponse, 但使用400状态代码。 |
class HttpResponseNotFound | 它的行为就像HttpResponse一样, 但是使用404状态代码。 |
HttpResponseNotAllowed类 | 它的行为就像HttpResponse一样, 但是使用410状态代码。 |
HttpResponseServerError | 它的行为类似于HttpResponse, 但使用500状态代码。 |
// views.py
from django.shortcuts import render# Create your views here.from django.http import HttpResponse, HttpResponseNotFounddef index(request):a = 1if a:return HttpResponseNotFound('<
h1>
Page not found<
/h1>
')else:return HttpResponse('<
h1>
Page was found<
/h1>
') # rendering the template in HttpResponse
输出:
Django View HTTP装饰器 HTTP装饰器用于基于请求方法限制对视图的访问。
这些装饰器在django.views.decorators.http中列出, 如果不满足条件, 则返回django.http.HttpResponseNotAllowed。
句法
require_http_methods(request_method_list)
Django Http装饰器示例
//views.py
from django.shortcuts import render# Create your views here.from django.http import HttpResponse, HttpResponseNotFoundfrom django.views.decorators.http import require_http_methods@require_http_methods(["GET"])def show(request):return HttpResponse('<
h1>
This is Http GET request.<
/h1>
')
仅当请求是HTTP GET请求时, 此方法才会执行。
//urls.py
from django.contrib import adminfrom django.urls import pathfrom myapp import viewsurlpatterns = [path('admin/', admin.site.urls), path('index/', views.index), path('show/', views.show), ]
【Django视图】输出:
推荐阅读
- Django虚拟环境设置
- Django URL映射
- Django开发教程
- Django模板
- Django静态文件处理
- Django会话session
- Django请求和响应
- 创建Django项目
- Django生成PDF文件