在 Django 通用详细信息视图中,上下文的索引从何而来?



在下面的示例中,上下文的索引'book_list'来自何事,如果是任意的,什么是命名约定?

class PublisherDetail(DetailView):
model = Publisher
def get_context_data(self, **kwargs):
    # Call the base implementation first to get a context
    context = super(PublisherDetail, self).get_context_data(**kwargs)
    # Add in a QuerySet of all the books
    context['book_list'] = Book.objects.all()
    return context 

您所指的命名约定(_list)基于ListViewtemplate_name_suffix。从MuttrolObjectTemplaterSemixin继承。

实际上,如果您根据您的示例使用这样的ListView,则:

class PublisherList(ListView):
    model = Publisher

...您可以在所有发布者的QuerySet中参考模板中的publisher_list

在您的示例中,您使用同一命名约定在数据库中的所有书籍列表中列出,但是您可以称呼该上下文变量(book_list)您想要的任何内容。

在该示例中,变量名称book_list是任意的。您可以使用 books或其他喜欢的东西。

使用book_listListView一致,这使得列表在模板上下文中可用为<lowercase model name>_list。有关更多信息,请参见有关制作友好模板上下文的文档。

最新更新