覆盖Django中的模板

问题描述 投票:1回答:1

我正在使用this library在我的django项目中添加会话选项卡。我正在使用这一行从我的项目中调用模块的模板:

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

它可以工作,但现在我想为页面设置样式,为此我需要使用我自己的模板覆盖模块的模板。所以,正如模块说here,我在我自己的SessionListView上继承了模块的views.py来覆盖模板:

from user_sessions.views import SessionListView

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

然后我把网址添加到我的urls.py

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

然后我在我自己的项目上创建了我的模板,其位置如下:templates/user_sessions/session_list

但由于某种原因,我仍然看不到我的模板出现,模块的模板不断出现。任何人都可以帮我找到我做错的事吗?

python django django-templates django-views django-urls
1个回答
3
投票

SessionListView默认使用user_sessions/session_list.html,因此不需要自定义视图。

听起来Django在你的模板之前在user_sessions/session_list.html应用程序中找到了user_sessions模板。如果您的模板位于应用程序的templates目录中,那么您可以通过在user_sessions设置中将应用程序移到INSTALLED_APPS上来解决此问题。

或者,如果将模板移动到'DIRS'设置中TEMPLATES列表中的目录,则Django将在检查应用程序模板目录之前找到您的模板。如果被覆盖的模板实际上不属于您的任何应用程序,则此更清晰,另一个优点是您不必重新排序INSTALLED_APPS列表。

有关更多信息,请参阅overriding templates上的文档。

© www.soinside.com 2019 - 2024. All rights reserved.