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'
  • 相关阅读:
    使用nginx部署Yii 2.0yii-advanced-app-2.0.6
    yii-basic-app-2.0.5/basic/config/web.php
    PS显示图像大小快捷键
    说说c, c++ 和 go
    十分钟搭建自己的私有NuGet服务器-BaGet(转)
    Redis面试总结&史上最全Redis面试题及答案(转)
    Kubernetes之helm部署使用(转)
    Kubernetes RBAC 详解(转)
    Kubernetes 集群安全机制详解(转)
    Repository 返回 IQueryable?还是 IEnumerable?(转)
  • 原文地址:https://www.cnblogs.com/weihengblog/p/9014880.html
Copyright © 2011-2022 走看看