zoukankan      html  css  js  c++  java
  • 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'
  • 相关阅读:
    PL/SQL:these query result are not updateable,include the ROWID to get updateab -----for update
    JDBC ORACLE
    ORACLE 分页 java 用jdbc方式以 sys账号连接oracle数据的问题
    浅析Linux DeviceTree
    linux驱动开发—基于Device tree机制的驱动编写
    高通9X07模块QMI架构使用入门
    man iptables 8
    man iptables(8)
    使用fakeroot模拟root权限执行程序(转)
    linux system()函数详解
  • 原文地址:https://www.cnblogs.com/weihengblog/p/9014880.html
Copyright © 2011-2022 走看看