Я устанавливаю {{ title }}
для каждой страницы моего проекта. Иногда этот title
является статической строкой, такой как Enter your Name
, и иногда она основана на соответствующем объекте на этой странице, например Employee.first_name
.Django CBV - Как избежать повторения get_context_data для каждого представления, чтобы получить собственный заголовок?
Чтобы создать context['title']
, я использую get_context_data
внутри каждого класса. Но это, по-видимому, приводит к тому, что я каждый раз повторяю кусок кода, и я хочу как-то уменьшить это.
Например, чтобы написать пользовательский заголовок для каждой страницы, я должен был бы написать так:
def get_context_data(self, **kwargs):
context = super(SomeView, self).get_context_data(**kwargs)
context['title'] = 'Title for This page'
return context
Я чувствую, что было бы идеально иметь подмешать, что я как-то просто передать в переменной для title
и мой словарь context
автоматически добавит context['title']
на основе переданной переменной.
Возможно ли это? Есть ли способ создать mixin, так что все, что мне нужно сделать, это передать переменную, и она даст мне контекст только для названия вместо того, чтобы записывать этот кусок кода для каждого отдельного представления?
Это не будет работать. Вероятно, вы имели в виду 'context ['title'] = self.get_title()'? –
Да, вы правы, извините за опечатку>. < –
это предполагает, что каждая модель имеет метод get_title' в определении своей модели? Что, если мне нужен титул «Все записи в блоге от автора:' author.first_name' »? Этот тип названия представляет собой сочетание статических данных и данных объекта. – Garfonzo