Django-视图

视图

  视图函数或视图简而言之就是一个Python函数,它接受一个Web请求并返回一个Web相应。此响应可以是网页HTML内容,重定向或404错误、XML文档或图像。视图本身包含任何必须的逻辑来返回该响应。惯例是将view.py文件放在项目或应用目录中。

一、简单的视图

这是一个简单的视图函数,从数据库中查出所有的出版社,并以HTML网页形式返回

from django.http import HttpResponse
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)

首先,我们需要导入HttpResponse这个类从django.http中

接下来,我们定义一个叫做的函数current_datetime这是查看功能。每个视图函数都将一个HttpRequest 对象作为其第一个参数,该参数通常被命名request

该视图返回一个HttpResponse包含生成的响应对象。每个视图函数负责返回一个HttpResponse对象。(有例外,但我们会在稍后讨论。)

最后将url映射到视图即可。

二、返回一个错误页面

返回一个HTTP错误代码非常容易在Django中,HttpResponse除了200以外,还有很多常见的HTTP状态代码的子类(意思是'OK'),您可以在请求/响应 文档中找到可用子类的完整列表只需返回其中一个子类的实例。

from django.http import HttpResponse, HttpResponseNotFound

def my_view(request):
    # ...
    if foo:
        return HttpResponseNotFound('<h1>Page not found</h1>')
    else:
        return HttpResponse('<h1>Page was found</h1>')

三、返回一个404异常

Django提供了一个Http404错误页面实例

from django.http import Http404
from django.shortcuts import render
from polls.models import Poll

def detail(request, poll_id):
    try:
        p = Poll.objects.get(pk=poll_id)
    except Poll.DoesNotExist:
        raise Http404("Poll does not exist")
    return render(request, 'polls/detail.html', {'poll': p})

 

四、自定义错误视图

 Django中的默认错误视图应该足以满足大多数Web应用程序的需求,但是如果您需要任何自定义行为,则可以轻松覆盖它们。只需在URLconf中指定处理程序,如下所示(在其他地方设置它们将不起作用)。

page_not_found()视图被以下内容覆盖 handler404

handler404 = 'mysite.views.my_custom_page_not_found_view'

 

server_error()视图被以下内容覆盖 handler500

handler500 = 'mysite.views.my_custom_error_view'

 

permission_denied()视图被以下内容覆盖 handler403

handler403 = 'mysite.views.my_custom_permission_denied_view'

 

bad_request()视图被以下内容覆盖 handler400

handler400 = 'mysite.views.my_custom_bad_request_view'

 

posted @ 2018-05-09 16:09  短毛兔  阅读(160)  评论(0编辑  收藏  举报