2016-12-15 2 views
0

В приведенном ниже примере, где происходит индекс индекса 'book_list', если произвольно, что такое соглашение об именах?В подробном представлении Django, откуда появляется индекс контекста?

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 

ответ

1

В этом примере имя переменной book_list является произвольным. Вы можете использовать books или что-нибудь еще, что вам нравится.

Использование book_list соответствует ListView, что делает список доступным в контексте шаблона как <lowercase model name>_list. Для получения дополнительной информации см. Документы на странице making friendly template contexts.

2

соглашение об именах вы имеете в виду (_list) основан на ListView «s template_name_suffix. Это наследуется от MultipleObjectTemplateResponseMixin.

На практике, если вы используете ListView как этот основанный на вашем примере:

class PublisherList(ListView): 

    model = Publisher 

... вы бы смогли обратиться к publisher_list в шаблоне для QuerySet всех издателей.

В вашем примере вы включаете список всех книг в своей базе данных, используя одно и то же соглашение об именах, но вы можете вызвать эту переменную контекста (book_list) все, что вы хотели.