【问题标题】:How to customize Page not found (404) in django?如何在 django 中自定义找不到页面(404)?
【发布时间】:2013-03-02 15:19:54
【问题描述】:

我如何在 Django 中自定义错误页面以及我将我的 html 放在哪里。

【问题讨论】:

标签: python html django templates


【解决方案1】:

只需在项目的根级templates 目录中创建一个404.html 文件。

【讨论】:

    【解决方案2】:

    首先您需要编辑 settings.py 以指向模板文件夹: Django template Path

    将 404.htm 放入模板文件夹后,您可以按照以下说明进行操作:

    通知搜索引擎当前页面是 404 很重要。您可以通过更改 http 标头来做到这一点。所以这是一个很好的方法:

    在你的应用程序的 urls.py 中添加:

    # Imports
    from django.conf.urls.static import static
    from django.conf.urls import handler404
    from django.conf.urls import patterns, include, url
    from yourapplication import views
    
    ##
    # Handles the URLS calls
    urlpatterns = patterns('',
        # url(r'^$', include('app.homepage.urls')),
    )
    
    handler404 = views.error404
    

    进入你的应用的views.py添加:

    # Imports
    from django.shortcuts import render
    from django.http import HttpResponse
    from django.template import Context, loader
    
    
    ##
    # Handle 404 Errors
    # @param request WSGIRequest list with all HTTP Request
    def error404(request):
    
        # 1. Load models for this view
        #from idgsupply.models import My404Method
    
        # 2. Generate Content for this view
        template = loader.get_template('404.htm')
        context = Context({
            'message': 'All: %s' % request,
            })
    
        # 3. Return Template for this view + Data
        return HttpResponse(content=template.render(context), content_type='text/html; charset=utf-8', status=404)
    

    秘密在最后一行:status=404

    希望对您有所帮助!

    我期待看到社区对这种方法的投入。 =)

    【讨论】:

      猜你喜欢
      • 2015-01-14
      • 2020-02-22
      • 1970-01-01
      • 2016-08-01
      • 2016-08-01
      • 2015-10-22
      • 2014-03-20
      • 2020-10-27
      • 2019-07-21
      相关资源
      最近更新 更多