我当前的模板结构有一个home.html
,从base.html
延伸。该home.html
文件还有自己的{% include %}
标记,可以从其他模板(联系表单等)中获取。
我遇到的问题是,当我在基于类的视图上使用{% include %}
标记时,我的模板中不会呈现任何内容。我仍然可以访问基于类的视图的URL,它在那里渲染得很好。
在这种情况下,frontpabe/contact.html
是典型的基于功能的视图,而frontpage/skills_list.html
是基于类的视图。
home.html的:
<div class="col-lg-4">
{% block contact %}
{% include 'frontpage/contact.html' %}
{% endblock %}
{% block skills %}
{% include 'frontpage/skills_list.html' %}
{% endblock %}
</div>
contact.html:
{% block contact %}
{% if errors %}
<ul>
{% for error in errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
<form action="" method="post">
{% csrf_token %}
<input type="text" name="subject" placeholder="I want a free estimate...">
<p></p>
<input type="text" name="email" placeholder="email address (optional)">
<p></p>
<textarea name="message" placeholder="here are some things I need..."></textarea>
<br />
<input type="submit" value="Submit">
</form>
{% endblock %}
skills_list.html:
{% block skills %}
{% for item in skills_list %}
<h3 style='background-color:yellow;'> {{ item.skills }} </h3>
{% endfor %}
{% endblock %}
答案 0 :(得分:2)
您的问题与基于功能的视图或基于类的视图无关 - {% include %}
标记仅包含模板本身 - 它不会调用视图。它就像你刚刚将联系人或技能模板的文本复制+粘贴到首页模板中一样。
如果没有看到其他代码,我就无法100%确定,但问题的一个可能位置是您的主页的视图类或功能没有变量skill_list,或者如果是的话,它是空的。因此,您的skills_list.html
模板正在使用,它只是渲染循环在空列表上的结果(快速检查是添加一点点静态文本,如&#34;你好?&#34;到你skills_list.html
之外的{% for ... %}
;如果你看到了,你肯定会渲染模板。
如果它是一个缺失的skills_list
变量,那几乎可以肯定是因为对视图/模板的误解。您可能会在CBV与skills_list.html
模板关联中定义该模板 - 但同样,{% include %}
标记也不会调用您的视图;它只包含原始模板本身。
答案 1 :(得分:0)
扩展和包含是不同的,不应该一起使用。如果要定义块,则让子模板扩展父级并覆盖块 - 不包括必需的:
<强> home.html的强>:
<div class="col-lg-4">
{% block contact %}
{% endblock %}
{% block skills %}
{% endblock %}
</div>
<强> contact.html 强>:
{% extends 'home.html' %}
{% block contact %}
{% if errors %}
<ul>
{% for error in errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
<form action="" method="post">
{% csrf_token %}
<input type="text" name="subject" placeholder="I want a free estimate...">
<p></p>
<input type="text" name="email" placeholder="email address (optional)">
<p></p>
<textarea name="message" placeholder="here are some things I need..."></textarea>
<br />
<input type="submit" value="Submit">
</form>
{% endblock %}
<强> skills_list.html 强>:
{% extends 'home.html' %}
{% block skills %}
{% for item in skills_list %}
<h3 style='background-color:yellow;'> {{ item.skills }} </h3>
{% endfor %}
{% endblock %}
<强> home.html的强>:
<div class="col-lg-4">
{% include 'frontpage/contact.html' %}
{% include 'frontpage/skills_list.html' %}
</div>
<强> contact.html 强>:
{% if errors %}
<ul>
{% for error in errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
<form action="" method="post">
{% csrf_token %}
<input type="text" name="subject" placeholder="I want a free estimate...">
<p></p>
<input type="text" name="email" placeholder="email address (optional)">
<p></p>
<textarea name="message" placeholder="here are some things I need..."></textarea>
<br />
<input type="submit" value="Submit">
</form>
<强> skills_list.html 强>:
{% for item in skills_list %}
<h3 style='background-color:yellow;'> {{ item.skills }} </h3>
{% endfor %}