lud*_*d0h 46 django development-environment
我正在使用Django进行项目,并且已经投入生产.
在生产环境中,每当发生服务器错误时都会呈现500.html.
如何在开发环境中测试500.html的渲染?或者我如何在开发中渲染500.html,如果我关闭调试我仍然得到错误而不是500.html
背景:我包含一些基于页面的页面元素,有些在调用500.html时丢失,并且想要在开发环境中调试它.
sha*_*nyu 46
我不想关掉DEBUG.相反,我将以下代码段放在urls.py中:
if settings.DEBUG:
urlpatterns += patterns('',
(r'^500/$', 'your_custom_view_if_you_wrote_one'),
(r'^404/$', 'django.views.generic.simple.direct_to_template', {'template': '404.html'}),
)
Run Code Online (Sandbox Code Playgroud)
在上面的代码片段中,错误页面使用自定义视图,您可以轻松地将其替换为Django的direct_to_template视图.
现在,您可以通过调用其网址来测试500和404页:http://example.com/500和http://example.com/404
dav*_*ode 28
在Django 1.6 django.views.generic.simple.direct_to_template
中不再存在,这些是我对特殊视图的设置:
# urls.py
from django.views.generic import TemplateView
from django.views.defaults import page_not_found, server_error
urlpatterns += [
url(r'^400/$', TemplateView.as_view(template_name='400.html')),
url(r'^403/$', TemplateView.as_view(template_name='403.html')),
url(r'^404/$', page_not_found),
url(r'^500/$', server_error),
]
Run Code Online (Sandbox Code Playgroud)
小智 17
如果您想使用默认的Django 500视图而不是自定义视图:
if settings.DEBUG:
urlpatterns += patterns('',
(r'^500/$', 'django.views.defaults.server_error'),
(r'^404/$', 'django.views.generic.simple.direct_to_template', {'template': '404.html'}),
)
Run Code Online (Sandbox Code Playgroud)
继续shanyu的回答,在Django 1.3+中使用:
if settings.DEBUG:
urlpatterns += patterns('',
(r'^500/$', 'django.views.defaults.server_error'),
(r'^404/$', 'django.views.defaults.page_not_found'),
)
Run Code Online (Sandbox Code Playgroud)
对于 Django > 3.0,只需将raise_request_exception
值设置为False
.
from django.test import TestCase
class ViewTestClass(TestCase):
def test_error_page(self):
self.client.raise_request_exception = False
response = self.client.get(reverse('error-page'))
self.assertEqual(response.status_code, 500)
self.assertTrue(
'some text from the custom 500 page'
in response.content.decode('utf8'))
Run Code Online (Sandbox Code Playgroud)
文档:https ://docs.djangoproject.com/en/3.2/topics/testing/tools/
注意:如果错误页面引发异常,则会在测试日志中显示为错误。默认情况下,您可以将测试日志记录设置为“严重”以抑制该错误。
两个调试设置都是假的吗?
settings.DEBUG = False
settings.TEMPLATE_DEBUG = False
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
12898 次 |
最近记录: |