【问题标题】:Custom Error 400/500 page in DjangoDjango 中的自定义错误 400/500 页面
【发布时间】:2016-12-31 20:07:23
【问题描述】:

有一些奇怪的问题。当我喜欢这个时

def error_page(request):
    return HttpResponseBadRequest

它会引发我在主 URLconf 中列出的自定义错误页面。 但是当我在那里通过异常时 - 我只得到一个带有异常文本的空白页。 例如,视图是这样的:

def error_page(request):
    return HttpResponseBadRequest('The error text')

我得到一个空白页面,正文中包含“错误文本”文本,但不是我的自定义错误页面。如何让 Django 使用我的错误页面模板,但带有错误文本?

我正在使用 Python 3.5 和 Django 1.10.4

【问题讨论】:

    标签: django


    【解决方案1】:

    您可以参考以下链接来创建自定义错误页面。 Django, creating a custom 500/404 error page

    要传递自定义消息,您可以使用 django 消息

    参考:https://docs.djangoproject.com/en/1.10/ref/contrib/messages/

    views.py

    from django.contrib import messages
    
    
    def foo(request):
        # Some view where you want to throw error
        messages.add_message(request, messages.ERROR, 'Something Not Wrong')
        raise Http404()
    

    在模板中,您可以在模板中加载消息:

    400.html

    {% if messages %}
    <ul class="messages">
        {% for message in messages %}
        <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
        {% endfor %}
    </ul>
    {% endif %}
    

    不要忘记在settings.py 中设置DEBUG = FalseALLOWED_HOSTS = ['localhost'],否则Django 会捕获错误。

    【讨论】:

    • 那么,这不是错误还是什么?因为我认为除了制作自己的视图来处理错误页面的消息之外,还有其他方法可以解决该问题
    猜你喜欢
    • 1970-01-01
    • 2013-07-13
    • 2015-08-26
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多