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'
  • 相关阅读:
    springboot 和 spring clould 的版本匹配问题
    行到水穷处,坐看云起时!
    转: 从单体应用 -> SOA--> 微服务 ,服务治理 [熔断,限流,降级,服务恢复,服务容错,监控等等]---> RPC ---> 下一代技术[Service Mesh]
    spring-boot自定义线程池
    千与千寻的内容抓手
    哲学三问
    简约的人生
    关于中间件整理
    此心光明,亦复何言!
    能容的下你身边比你优秀的人---是一种修行
  • 原文地址:https://www.cnblogs.com/weihengblog/p/9014880.html
Copyright © 2011-2022 走看看