2013-03-01 4 views

Antwort

19

Es macht nichts, ich habe vergessen, dies zu versuchen:

from path.to.view import Custom404 
handler404 = Custom404.as_view() 

jetzt so einfach zu sein scheint, ist es wahrscheinlich nicht verdient eine Frage auf Stackoverflow.

+2

Das scheint bei uns nicht zu funktionieren. Ich bekomme 'ContentNotRenderedError: Der Response-Inhalt muss gerendert werden, bevor es iteriert werden kann. –

+1

@NicolasBouliane Ich habe den gleichen Fehler. Hast du es geschafft, das zu beheben? – Depado

+1

Rufen Sie einfach '.render()' darauf an. –

2

Verwaltet es, indem Sie den folgenden Code in meinem benutzerdefinierten 404 CBV (fand es auf andere Stackoverflow Post: Django handler500 as a Class Based View) funktioniert

from django.views.generic import TemplateView 


class NotFoundView(TemplateView): 
    template_name = "errors/404.html" 

    @classmethod 
    def get_rendered_view(cls): 
     as_view_fn = cls.as_view() 

     def view_fn(request): 
      response = as_view_fn(request) 
      # this is what was missing before 
      response.render() 
      return response 

     return view_fn 

In meiner Wurzel URLconf Datei Ich habe folgendes:

from apps.errors.views.notfound import NotFoundView 

handler404 = NotFoundView.get_rendered_view() 
+0

Vorsicht, Sie sollten einen 404-Status zurückgeben und nicht nur eine Vorlage anzeigen, die so aussieht. Sie sollten 'response.status_code = 404' hinzufügen. – guival

Verwandte Themen