Django模板的“ extends”标签无效

时间:2018-07-31 09:44:47

标签: django django-templates django-views

我也在这里检查了类似的问题,但我的问题不是其中之一。其实我没有得到一个具体的错误,但是从字面上得到了任何东西。

我有一个名为 dashboard.html 的主模板,它位于项目级别的模板文件夹中。我在其中有一个方块;

*** some code here ***

<li class="nav-item">
    <a class="nav-link" href="{% url 'products:test' %}">
       <span data-feather="shopping-cart"></span>
       Products
    </a>
</li>

*** some code here

{% block test_html %}
{% endblock test_html %}

我有一个名为“产品”的应用程序,在其模板文件夹中,有 test.html 文件。这里是它的内容;

{% extends 'products/base.html' %}
{% load static %}

{% block test_html %}
  <h1>test</h1>
  <h1>test</h1>
  <h1>test</h1>
{% endblock test_html %}

我的 products / base.html 文件;

{% extends 'dashboard.html' %}

我的 products / urls.py 文件;

app_name = 'products'
urlpatterns = [
    path('', views.IndexView.as_view(), name='base'),
    path('<int:pk>/', views.DetailView.as_view(), name='detail'),
    path('', TemplateView.as_view(template_name='products/test.html'), name='test'),
]

当我加载页面时,什么也没有发生。这也是屏幕截图链接;

http://i.prntscr.com/wtGNfcj4RZOClPndNfnX3w.png

我期望我的test.html文件中的h1标签位于屏幕截图上显示的空白区域。

PS:实际上,我期望从我的urls.py中显示IndexView,但是出于测试目的,我创建了一个test.html来检查它是否适用于简单的html。

感谢您的时间和答案。

编辑:如果我也在项目级别模板目录中的 products / base.html 文件中将{% extends 'dashboard.html' %}更改为{% extends 'base.html' %},然后产品页面正常工作。我不了解的是,两个不同的应用程序可以不使用项目级别模板目录中的同一html文件吗?有这样的规则吗?

2 个答案:

答案 0 :(得分:0)

模板继承不能那样工作。子模板只能填充直接父模板中定义的块。因此父级不能为空。您还需要在products / base.html中定义(空)test_html块。

答案 1 :(得分:0)

原来,该问题是由于CSS引起的。我的产品html被仪表板的容器覆盖。