在下面的示例中,上下文的索引' 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
答案 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_list
与ListView
一致,这使得模板上下文中的列表可用<lowercase model name>_list
。有关详细信息,请参阅making friendly template contexts上的文档。