11

なぜこれが機能しないのですか

handler500 = TemplateView.as_view(template_name="500.html")

次の例外が発生します。

Traceback (most recent call last):
  File "/usr/lib/python2.6/wsgiref/handlers.py", line 94, in run    
    self.finish_response()
  File "/usr/lib/python2.6/wsgiref/handlers.py", line 134, in finish_response
    for data in self.result:
  File "/home/hatem/projects/leadsift_app/.virtualenv/lib/python2.6/site-packages/django/template/response.py", line 117, in __iter__
    raise ContentNotRenderedError('The response content must be 'ContentNotRenderedError: The response content must be rendered before it can be iterated over.

クラスベースのビューを使用するために自分自身を撃っていることを説明するこの一連のメモを見つけましたが、それはなぜですか?

編集:私はこれを使用することになりました...しかし、元のワンライナーまたは同様の作業を行う方法を誰かが教えてくれることを望んでいます

class Handler500(TemplateView):
    template_name = "500.html"  
    @classmethod
    def as_error_view(cls):
        v = cls.as_view()
        def view(request):
            r = v(request)
            r.render()
            return r
        return view
handler500 = Handler500.as_error_view()
4

2 に答える 2

2

実際には非常に単純だと思います(Django 1.7 with Python 3.4):

ビュー.py

from django.http import HttpResponse
from django.views.generic.base import View

class Custom500View(View):
    def dispatch(self, request, *args, **kwargs):
        return HttpResponse('My custom django 500 page')

urls.py

from .views import Custom500View

handler500 = Custom500View.as_view()
于 2015-03-27T10:20:48.893 に答える
0

私はむしろ、標準の Django で静的 HTML を含むストック 500 テンプレートを使用してから、コードで何でもしたいと考えています。これは、触れてはいけないトグルの 1 つです。

于 2012-12-03T05:59:42.707 に答える