覆盖 Django 中的模板
Overriding a template in Django
我正在使用 this library 在我的 Django 项目上添加会话选项卡。我正在使用此行从我的项目中调用模块的模板:
<li><a href="{% url 'user_sessions:session_list' %}">Sessions</a></li>
它有效,但现在我想设置页面样式,为此我需要用我自己的模板覆盖模块的模板。所以,正如模块所说 here,我自己 views.py
继承了模块的 SessionListView
来覆盖模板:
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模板出现,而是一直出现模块的模板。谁能帮我找出我做错了什么?
默认情况下 SessionListView
已经使用 user_sessions/session_list.html
,因此不需要您的自定义视图。
听起来 Django 在您的模板之前在 user_sessions
应用程序中找到 user_sessions/session_list.html
模板。如果您的模板位于应用程序的 templates
目录中,那么您可以通过在 INSTALLED_APPS
设置中将应用程序移至 user_sessions
上方来解决此问题。
或者,如果您将模板移动到 TEMPLATES
设置中 'DIRS'
列表中的目录,那么 Django 会在检查应用程序模板目录之前找到您的模板。如果您覆盖的模板实际上不属于您的任何应用程序,这会更干净,另一个优点是您不必重新排序 INSTALLED_APPS
列表。
有关详细信息,请参阅 overriding templates 上的文档。
我正在使用 this library 在我的 Django 项目上添加会话选项卡。我正在使用此行从我的项目中调用模块的模板:
<li><a href="{% url 'user_sessions:session_list' %}">Sessions</a></li>
它有效,但现在我想设置页面样式,为此我需要用我自己的模板覆盖模块的模板。所以,正如模块所说 here,我自己 views.py
继承了模块的 SessionListView
来覆盖模板:
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模板出现,而是一直出现模块的模板。谁能帮我找出我做错了什么?
默认情况下 SessionListView
已经使用 user_sessions/session_list.html
,因此不需要您的自定义视图。
听起来 Django 在您的模板之前在 user_sessions
应用程序中找到 user_sessions/session_list.html
模板。如果您的模板位于应用程序的 templates
目录中,那么您可以通过在 INSTALLED_APPS
设置中将应用程序移至 user_sessions
上方来解决此问题。
或者,如果您将模板移动到 TEMPLATES
设置中 'DIRS'
列表中的目录,那么 Django 会在检查应用程序模板目录之前找到您的模板。如果您覆盖的模板实际上不属于您的任何应用程序,这会更干净,另一个优点是您不必重新排序 INSTALLED_APPS
列表。
有关详细信息,请参阅 overriding templates 上的文档。