簡體   English   中英

django 模板擴展不工作

[英]django template extends not working

這是我的基地.html

<!DOCTYPE html> 
<head> 
<title> My Site </title>
</head> 
<body>
<div id="wrapper">  
<!-- HEADER START -->
{% block nav %} {% endblock %}
{% block index %} {% endblock %}
</div> 
</body>
</html>

這是我的導航 html

{% extends "base.html" %}
{% block nav %}
<div id="header"> 
<div class="inner">

<div class="nav"> 
<ul> 
<li class="current"><a href="index.html">Home</a></li> 
<li><a href="about.html">About</a></li> 
<li><a href="blog_right.html">Blog</a></li>                        
<li><a href="contact.html">Contact</a></li> 
</ul>                     
</div>  
<div class="clear"></div>           
</div><!-- .inner end --> 
</div><!-- #header end --> 
<!-- HEADER END -->
{% endblock %}

這是我的 index.html

{% extends "base.html" %}
{% block index %}
<p> hello </p>
{% endblock %}

我以前做過幾次,但我不知道為什么這不起作用? 網址和視圖在這里。

好吧,一切都很好,你遇到的麻煩是你很困惑,只是在 base 中命名一個塊並沒有調用它。 標記擴展和包含之間的區別。 你已經混淆了擴展到包含。

一旦進入你的視圖,如果你調用 say index.html 它將被正確呈現。 將view中的base.html改成index.html就可以達到你想要的效果。

希望這可以幫助。 更多內容可以在這里閱讀: https : //docs.djangoproject.com/en/dev/topics/templates/#template-inheritance

對於最終來到這里的更多人(如我自己),主要要注意的是,當您使用{% extends 'something.html' %} ,除了這些模板標簽之外,您不能在頂層使用任何其他標簽。

您顯然可以在這些標簽內放置 html 標簽(如塊標簽),但不要在模板標簽外放置任何東西。

如果您更改 extends 中的路徑也有幫助,例如 {% extends 'mysite/index.html' %}。 並且視圖函數必須用擴展來渲染文件,而不是基本的。

views.py中,您必須調用擴展另一個模板的模板,而不是相反。 在您的示例中,您應該調用 nav.html。

嘗試這樣做

{% extends 'appname/index.html' %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM