Django 模板未加载
Django Template Aren't Loading
我正在尝试将不同的 html 文件加载到 base.html 中,但它们没有显示。有什么想法吗?
<body class="bg">
<main class='text'>
{% block carousel %}
{% endblock %}
{% block info%}
{% endblock %}
{% block content %}
{% endblock %}
{% block mobile %}
{% endblock %}
</main>
</body>
我认为您可能混淆了模板 inheritance 和模板 composition.
在模板 继承 中,您有一个像 base.html
:
这样的基页
<body class="bg">
<main class='text'>
{% block carousel %}
{% endblock %}
{% block info%}
{% endblock %}
{% block content %}
{% endblock %}
{% block mobile %}
{% endblock %}
</main>
</body>
然后,您有第二个模板 shoes.html
扩展 base.html
。它继承了 base.html
的所有 HTML,但在块中填充了一些自定义内容:
{% extends "base.html" %}
{% block carousel %}
<p>Carousel</p>
{% endblock %}
{% block info%}
<p>Info</p>
{% endblock %}
{% block content %}
<p>Content</p>
{% endblock %}
{% block mobile %}
<p>Mobile</p>
{% endblock %}
因此,当您在视图中渲染它时:
views.py
from django.shortcuts import render
def index(request):
return render(request, 'polls/shoes.html', {})
你得到这个结果:
<body class="bg">
<main class='text'>
<p>Carousel</p>
<p>Info</p>
<p>Content</p>
<p>Mobile</p>
</main>
</body>
我怀疑您有不同的 HTML 文件以每个块命名(例如 carousel.html
、info.html
)。这不是 Django 的工作方式(但 是 Ruby on Rails 的工作方式)。那是你想做的吗?如果不是,请更新您的问题以进行澄清。
我正在尝试将不同的 html 文件加载到 base.html 中,但它们没有显示。有什么想法吗?
<body class="bg">
<main class='text'>
{% block carousel %}
{% endblock %}
{% block info%}
{% endblock %}
{% block content %}
{% endblock %}
{% block mobile %}
{% endblock %}
</main>
</body>
我认为您可能混淆了模板 inheritance 和模板 composition.
在模板 继承 中,您有一个像 base.html
:
<body class="bg">
<main class='text'>
{% block carousel %}
{% endblock %}
{% block info%}
{% endblock %}
{% block content %}
{% endblock %}
{% block mobile %}
{% endblock %}
</main>
</body>
然后,您有第二个模板 shoes.html
扩展 base.html
。它继承了 base.html
的所有 HTML,但在块中填充了一些自定义内容:
{% extends "base.html" %}
{% block carousel %}
<p>Carousel</p>
{% endblock %}
{% block info%}
<p>Info</p>
{% endblock %}
{% block content %}
<p>Content</p>
{% endblock %}
{% block mobile %}
<p>Mobile</p>
{% endblock %}
因此,当您在视图中渲染它时:
views.py
from django.shortcuts import render
def index(request):
return render(request, 'polls/shoes.html', {})
你得到这个结果:
<body class="bg">
<main class='text'>
<p>Carousel</p>
<p>Info</p>
<p>Content</p>
<p>Mobile</p>
</main>
</body>
我怀疑您有不同的 HTML 文件以每个块命名(例如 carousel.html
、info.html
)。这不是 Django 的工作方式(但 是 Ruby on Rails 的工作方式)。那是你想做的吗?如果不是,请更新您的问题以进行澄清。