2014-01-13 49 views
2

這是我的基本的HTML網頁,其中我的其他HTML頁面擴展超出(它被稱爲base.html文件)的:Django模板 - 如果顯示{%塊%}標籤不能正常工作之前發言?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 

    <head> 
     <title>Django Bookmarks | {% block title %}{% endblock %}</title> 
     <link rel='stylesheet' type='text/css' href='/site_media/css/style.css' /> 
    </head> 

    <body> 

     {% block header %} 
      <p> signed in! </p> 
     {% endblock %} 

     {% block content %}{% endblock %} 

    </body> 

</html> 

現在,這是我的主頁。

{% extends "base.html" %} 

{% block title %} Title {% endblock %} 

{% if user.username %} 
{% else %} 
    {% block header %}{% endblock %} 
{% endif %} 

{% block content %} 
    {% if user.username %} 
     <p>Welcome {{ user.username }}.</p> 
    {% else %} 
     <p>Not Signed in</p> 
    {% endif %} 
{% endblock %} 

,你可以看到,我想我的

{% block header %}{% endblock %} 

如果沒有用戶登錄,但如果有用戶登錄,我想

{% block header %} 
是空的

從base.html文件繼承。但是,它不會從base.html文件繼承,即使用戶已登錄。當用戶簽署的頭塊不顯示。任何想法,爲什麼?

回答

5

使用block.super

{% block header %} 
    {% if user.username %} 
     {{ block.super }} 
    {% else %} 
     {# empty #} 
    {% endif %} 
{% endblock %} 

根據Django template documentation

如果您需要從父模板獲得該塊的內容, 的{{ block.super }}變量會做的伎倆。如果 要添加到父塊,而不是 的內容完全覆蓋它,這非常有用。 .....

+0

編輯:沒關係,它的工作原理。謝謝! – user2719875

+0

+1。爲了好的解釋。 – Khamidulla