在Django通用详细信息视图中,context的索引来自哪里?

时间:2016-12-15 16:55:22

标签: python django django-views

在下面的示例中,上下文的索引' 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 

2 个答案:

答案 0 :(得分:2)

您引用的命名约定(_list)基于ListView' s template_name_suffix。这继承自MultipleObjectTemplateResponseMixin

在实践中,如果你根据你的例子使用ListView这样的话:

class PublisherList(ListView):

    model = Publisher

...您可以在模板中引用所有发布商的查询集中的publisher_list

在您的示例中,您使用相同的命名约定包含数据库中所有图书的列表,但您可以调用该上下文变量(book_list)。

答案 1 :(得分:1)

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

使用book_listListView一致,这使得模板上下文中的列表可用<lowercase model name>_list。有关详细信息,请参阅making friendly template contexts上的文档。