Переопределение шаблона в Django - PullRequest
1 голос
/ 20 марта 2019

Я использую эту библиотеку , чтобы добавить вкладку сессий в мой проект django. Я вызываю шаблон модуля из моего проекта, используя следующую строку:

<li><a href="{% url 'user_sessions:session_list' %}">Sessions</a></li>

Это работает, но теперь я хотел бы стилизовать страницу, и для этого мне нужно переопределить шаблон модуля своим собственным шаблоном. Итак, как говорит модуль здесь , я унаследовал SessionListView модуля самостоятельно views.py, чтобы переопределить шаблон:

from user_sessions.views import SessionListView

class MySessionList(SessionListView):
    template_name = 'user_sessions/session_list.html'

Затем я добавил URL к своему urls.py

    url(
        regex=r'^account/sessions/$',
        view=MySessionList.as_view(),
        name='sessions',
        ),

А потом я создал свой шаблон на своем собственном проекте, который расположен так: templates/user_sessions/session_list.

Но по какой-то причине я до сих пор не вижу шаблон MY , вместо этого шаблон модуля продолжает появляться. Может кто-нибудь помочь мне понять, что я делаю не так?

1 Ответ

3 голосов
/ 20 марта 2019

SessionListView уже использует user_sessions/session_list.html по умолчанию, поэтому ваш пользовательский вид не требуется.

Похоже, Django находит шаблон user_sessions/session_list.html в приложении user_sessions перед вашим шаблоном. Если ваш шаблон находится в каталоге templates приложения, вы можете это исправить, переместив ваше приложение выше user_sessions в настройке INSTALLED_APPS.

В качестве альтернативы, если вы переместите свой шаблон в каталог в списке 'DIRS' в настройке TEMPLATES, Django найдет ваш шаблон до того, как проверит каталоги шаблонов приложений. Это будет лучше, если ваш переопределенный шаблон на самом деле не принадлежит ни одному из ваших приложений, и еще одним преимуществом является то, что вам не нужно переупорядочивать список INSTALLED_APPS.

См. Документацию по переопределению шаблонов для получения дополнительной информации.

...