0

各エントリでテンプレート名を指定できるモデルのフィールドを使用するために DetailView を作成しようとしていtemplate_nameます (flatpages モデルのように)。DetailView を使用しようとしていますが、使用しない方がよいでしょうか?

これが私が書き込もうとしたものですが、このエラーが発生します:'NoneType' object has no attribute 'render'

class EntryDetailView(DetailView):
    
    model = Entry
       
    def get_template_names(Entry, **kwargs):
        if Entry.template_name:
            template_name = "entry/%s" % Entry.template_name
        else:
            template_name = "entry/entry_detail.html"

それを正しくする方法に関するヒントはありますか?

編集:

ここに私のトレースバックがあります:

Traceback:
File "/home/USER/.virtualenvs/PROJECT/src/Django-1.6b2/django/core/handlers/base.py" in get_response
  139.                 response = response.render()
File "/home/USER/.virtualenvs/PROJECT/src/Django-1.6b2/django/template/response.py" in render
  105.             self.content = self.rendered_content
File "/home/USER/.virtualenvs/PROJECT/src/Django-1.6b2/django/template/response.py" in rendered_content
  82.         content = template.render(context)

Exception Type: AttributeError at /entries/test/
Exception Value: 'NoneType' object has no attribute 'render'
4

1 に答える 1

2

これを試してください(Django 1.5を想定):

class EntryDetailView(DetailView):
    model = Entry
    template_name_field = 'template_name'

template_name_fieldに関するドキュメント。

于 2013-09-04T18:57:09.923 に答える