从字段值指定模板名称

时间:2013-09-04 18:18:56

标签: django django-views

我试图编写一个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"

有关如何正确使用的任何提示?

编辑:

这是mye traceback:

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'

1 个答案:

答案 0 :(得分:2)

试试这个(假设Django 1.5):

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

关于template_name_field的文档。