【问题标题】:Preview custom 500 error page in Wagtail?在 Wagtail 中预览自定义 500 错误页面?
【发布时间】:2019-12-09 15:05:46
【问题描述】:

我在 Wagtail 中制作了自定义 500 和 404 错误页面。我可以通过输入错误的 url 来预览 404 页面。我只是想知道如何预览 500 页?

自定义页面包含指向静态图像的链接,我需要检查它们是否正常工作。

我的 urls.py

from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin

from wagtail.contrib.sitemaps.views import sitemap
from wagtail.admin import urls as wagtailadmin_urls
from wagtail.core import urls as wagtail_urls
from wagtail.documents import urls as wagtaildocs_urls


admin.autodiscover()

urlpatterns = [
    url(r'django-admin/', admin.site.urls),

    url(r'^admin/', include(wagtailadmin_urls)),
    url(r'^documents/', include(wagtaildocs_urls)),

    url(r'^sitemap\.xml$', sitemap),

    url(r'', include('puput.urls')),
    url(r'', include(wagtail_urls)),
]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

if 'debug_toolbar' in settings.INSTALLED_APPS:
    import debug_toolbar

    urlpatterns += [
        url(r'^__debug__/', include(debug_toolbar.urls)),
    ]

【问题讨论】:

  • 这能回答你的问题吗? How can I trigger a 500 error in Django?
  • 这是最接近的问题/答案,但 Wagtail 没有 views.py 文件来添加“my_test_500_view(request)”,所以我不确定如何将此方法转换为 wagtail
  • 好的,我已经给出了如何集成视图的代码示例。 Wagtail 很乐意与其他应用的视图模块并排。

标签: django wagtail


【解决方案1】:

https://stackoverflow.com/a/24660486/823020 的答案包含大部分这些细节。您可以创建一个引发 500 错误的视图。

您可以将 views.py 添加到任何应用程序。在该文件中(直接取自链接的答案):

from django.http import HttpResponseServerError
def my_test_500_view(request):
        # Return an "Internal Server Error" 500 response code.
        return HttpResponseServerError()

在你的 urls.py 中补充:

from django.conf import settings
from django.urls import path
# or for Django 1.x do
# from django.urls import url
from myapp import views

urlpatterns = [
    # original content here
]

if settings.DEBUG:
    urlpatterns += [
        path('test_500/', views.my_test_500_view, name="test_500"),
        # or for Django 1.x do
        # url(r'^test_500/$', views.my_test_500_view, name="test_500"),
    ]

如果它与任何 Wagtail 页面不直接相关,那么 utils Django 应用程序可以很好地用于通用共享代码。

【讨论】:

  • 嗨 nimasmi,'from django.urls import path' 行导致错误
  • 哦,抱歉。 path() 是 Django 2.0 中的新功能。见docs.djangoproject.com/en/2.2/ref/urls/#path。您使用的是 1.X 版本吗?如果是这样,我可以更新代码示例。
  • 好的,我已将 Django 1.x 版本添加为 cmets。您需要删除它们上方的 Django 2 path() 行。
  • 通常 Django 有中间件重定向到 localhost:8000/test_500/,但以防万一,尝试使用尾部斜杠(或设置settings.APPEND_SLASH = True)。
  • 在您的 Django 设置文件中,但由于斜线没有区别,这可能是一个红鲱鱼。您是否将DEBUG 设置为True 运行?如果不是,也许尝试将test_500 URL 定义移到if 块之外,例如到您的urlpatterns 列表中的第一个条目(但不要将其永久留在那里)。此时,您要么需要在问题中发布更多代码(可能是完整的 urls.py),要么自行迭代以找到适合您项目的解决方案。
【解决方案2】:

只需将带有 TemplateView 的 url 添加到您的 urls.py:

from django.views.generic import TemplateView


urlpatterns = [
    url(r"^admin/", include(wagtailadmin_urls)),
    url(r"^documents/", include(wagtaildocs_urls)),
    url(r"^500/", TemplateView.as_view(template_name='500.html')),
]

【讨论】:

    猜你喜欢
    • 2015-08-26
    • 2015-11-18
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    相关资源
    最近更新 更多