个性化阅读
专注于IT技术分析

Django视图

本文概述

视图是放置应用程序业务逻辑的地方。该视图是一个python函数, 用于执行一些业务逻辑并将响应返回给用户。此响应可以是网页的HTML内容, 也可以是重定向或404错误。

所有视图功能都是在Django应用的views.py文件中创建的。

Django查看简单示例

//views.py

import datetime
# Create your views here.
from django.http import HttpResponse
def index(request):
    now = datetime.datetime.now()
    html = "<html><body><h3>Now time is %s.</h3></body></html>" % now
    return HttpResponse(html)    # rendering the template in HttpResponse

让我们逐步看一下代码。

首先, 我们将导入DateTime库, 该库提供一种获取当前日期和时间以及HttpResponse类的方法。

接下来, 我们定义一个视图函数索引, 该索引接受HTTP请求并进行响应。

使用urls.py中的URL映射时查看呼叫。例如

path('index/', views.index), 

输出:

django视图

返回错误

Django提供了各种内置的错误类, 它们是HttpResponse的子类, 用于将错误消息显示为HTTP响应。下面列出了一些类。

描述
HttpResponseNotModified类 它用于指定自用户的上一个请求以来(状态代码304)尚未修改页面。
HttpResponseBadRequest类 它的行为类似于HttpResponse, 但使用400状态代码。
class HttpResponseNotFound 它的行为就像HttpResponse一样, 但是使用404状态代码。
HttpResponseNotAllowed类 它的行为就像HttpResponse一样, 但是使用410状态代码。
HttpResponseServerError 它的行为类似于HttpResponse, 但使用500状态代码。

Django查看范例

// views.py

from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse, HttpResponseNotFound
def index(request):
    a = 1
    if a:
        return HttpResponseNotFound('<h1>Page not found</h1>')
    else:
        return HttpResponse('<h1>Page was found</h1>') # rendering the template in HttpResponse

输出:

django的视图1

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, HttpResponseNotFound
from 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 admin
from django.urls import path
from myapp import views
urlpatterns = [
    path('admin/', admin.site.urls), path('index/', views.index), path('show/', views.show), ]

输出:

django视图2
赞(0)
未经允许不得转载:srcmini » Django视图

评论 抢沙发

评论前必须登录!