57 votes

Comment faire pour tester 500.html dans (django) développement env?

Je suis à l'aide de Django pour un projet, et est déjà en production.

Dans l'environnement de production 500.html est rendu à chaque fois qu'une erreur de serveur se produit.

Comment puis-je tester le rendu de 500.html en environnement de dev? Ou comment rendre 500.html en dev, si je le turn-off debug j'ai toujours les erreurs et de ne pas 500.html

contexte: - je inclure certains éléments de la page sont basées sur une page et certaines sont manquantes lorsque 500.html est appelé et souhaitez déboguer en environnement de dev.

52voto

shanyu Points 4775

Je préfère ne pas tourner le DEBUG off. Au lieu de cela j'ai mis le bout de code suivant dans le 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'}),
    )

Dans l'extrait ci-dessus, la page d'erreur utilise un affichage personnalisé, vous pouvez facilement le remplacer par Django direct_to_template vue.

Maintenant, vous pouvez tester 500 et 404 pages en les appelant par leurs urls: http://example.com/500 et http://example.com/404

33voto

daveoncode Points 4453

Dans Django 1.6 django.views.generic.simple.direct_to_template n'existe plus, ce sont mes paramètres pour des vues spéciales:

urlpatterns += patterns(
        '',
        url(r'^400/$', TemplateView.as_view(template_name='400.html')),
        url(r'^403/$', TemplateView.as_view(template_name='403.html')),
        url(r'^404/$', 'django.views.defaults.page_not_found'),
        url(r'^500/$', 'django.views.defaults.server_error'),
    )

18voto

ehc Points 378

Et si vous souhaitez utiliser la valeur par défaut de Django 500 vue à la place de votre vue personnalisée:

if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^500/$', 'django.views.defaults.server_error'),
        (r'^404/$', 'django.views.generic.simple.direct_to_template', {'template': '404.html'}),
    )

8voto

Udi Points 6298

Continue shanyu de réponse, dans Django 1.3+ utilisation:

if settings.DEBUG:
    urlpatterns += patterns('',
        (r'^500/$', 'django.views.defaults.server_error'),
        (r'^404/$', 'django.views.defaults.page_not_found'),
    )

5voto

maersu Points 1724

Sont à la fois les paramètres de débogage faux?

settings.DEBUG = False
settings.TEMPLATE_DEBUG = False

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X