Рендеринг различных шаблонов для ListView - PullRequest
1 голос
/ 11 апреля 2020

У меня есть ListView с некоторыми хорошими функциями, которые я хочу использовать из другого приложения. То, как я это сделал, использовало get_template_names.

def get_template_names(self):
        referer = self.request.META['HTTP_REFERER']
        if "/mwo/order/" in referer:
            return ['invent/use_part.html']
        return ['invent/part_list.html']

К которому я обращаюсь из двух разных приложений:

path('inventory/', PartListView.as_view(), name='partlist'),
...
path('mwo/order/<int:pk>/add_part/', PartListView.as_view(),
            name='add_part'),

Но это вызывает ошибку, если я использую прямую ссылку на 1-й URL из Navbar, а не из другого приложения. Теперь я новичок в django и уверен, что для этого должен быть лучший способ. Что я могу использовать вместо запроса реферера для отображения другого шаблона для ListView, когда я получаю к нему доступ из другого представления.

1 Ответ

1 голос
/ 11 апреля 2020

Вы можете указать template_name в .as_view:

path('inventory/', PartListView.as_view(<b>template_name='invent/part_list.html'</b>), name='partlist'),
# &hellip;
path('mwo/order/<int:pk>/add_part/', PartListView.as_view(<b>template_name='invent/use_part.html'</b>), name='add_part'),

Тогда, конечно, вы должны удалить get_template_names из метода, так как в противном случае вы переопределите это поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...