在Django中的自定义404/500页面中使用静态文件

her*_*i0n 7 django http-status-code-404 django-staticfiles

我想在我制作的自定义404/500页面上使用一些自定义CSS和图像.但是Django在这些页面中不包含STATIC_URL变量.实现这一目标的最佳方法是什么?我也试过制作一个自定义的404/500视图并渲染一个任意的HTML文件,但它没有那么好用.

Mat*_*att 17

我是这样做的:

# urls or settings
handler500 = 'mysite.views.server_error'

# views
from django.shortcuts import render

def server_error(request):
    # one of the things ‘render’ does is add ‘STATIC_URL’ to
    # the context, making it available from within the template.
    response = render(request, '500.html')
    response.status_code = 500
    return response
Run Code Online (Sandbox Code Playgroud)

值得一提的是Django默认不这样做的原因:

"默认的500视图不会将变量传递给500.html模板,并使用空的Context进行渲染,以减少出现其他错误的可能性."

- Adrian Holovaty,Django文档