在Django中覆盖模板

时间:2019-03-20 14:22:16

标签: python django django-templates django-views django-urls

我正在使用this library在django项目中添加一个会话标签。我使用以下代码从项目中调用模块的模板:

select max(column1),max(column2),max(column3),max(column4)
from ( select if(qid = 1,@column1 := content,@column1) as column1,
              if(qid = 2,@column2 := content,if(qid < 2,@column2 := '',@column2)) as column2,
              if(qid = 3,@column3 := content,if(qid < 3,@column3 := '',@column3)) as column3,
              if(qid = 4,@column4 := content,if(qid < 4,@column4 := '',@column4)) as column4
from test , (select @column1 := '',@column2 := '',@column3 := '',@column4 := '') init_variables) derived
group by column1;

它可以工作,但是现在我想为页面设置样式,并且要做到这一点,我需要用自己的模板覆盖模块的模板。因此,正如模块所说的here,我继承了自己的<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'

urls.py

然后我在自己的项目中创建了模板,其位置如下: url( regex=r'^account/sessions/$', view=MySessionList.as_view(), name='sessions', ),

但是由于某些原因,我仍然看不到 MY 模板出现,而是模块的模板不断出现。谁能帮助我找出我在做错什么?

1 个答案:

答案 0 :(得分:3)

默认情况下,Get-AzSubscriptions已使用New-AzSubscriptions,因此不需要您的自定义视图。

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

或者,如果将模板移动到user_sessions设置的INSTALLED_APPS列表中的目录中,那么Django将在检查应用程序模板目录之前找到您的模板。如果您覆盖的模板确实不属于您的任何应用程序,则此方法更干净,并且另一个优点是您不必重新排序'DIRS'列表。

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