2012-12-21 43 views
2

我正在django(1.4)的我的網站上工作。 我有問題與獲取塊的名稱(爲了編輯它)。在django模板語言中獲取按名稱的塊

在從我的基本模板繼承的每個模板中,我都有一個字符串指定了塊名。我想在一個特定的塊中定義一些文本(在擴展模板中定義),其名稱等於變量塊名的內容。

編輯:

base.html文件

{% block b1 %}no changes{% endblock %} 
{% block b2 %}no changes{% endblock %} 
{% block b3 %}no changes{% endblock %} 

subpage.html

??? 

顯示subpage.html有鑑於這樣的:

def show_subpage(request): 
    t = loader.get_template('subpage.html') 
    c = RequestContext(request, {'blockname': 'b2'}) 
    return HttpResponse(t.render(c)) 

應該已經導致如下:

沒有變化變化沒有改變

我怎樣才能做到這一點?

+0

讓我們瞭解您正在努力實現, – Amyth

+0

的Django的例子不支持嵌套塊,如果這是你正在尋找。 – karthikr

+0

它也支持{%if%}無論{%endif%}。具體的例子,請,什麼/沒有工作。 –

回答

0

如果我理解你的權利,那麼這是你想要的...

def show_subpage(request): 
    t = loader.get_template('subpage.html') 
    c = RequestContext(request, {'blockname': ' Change '}) 
    return HttpResponse(t.render(c)) 

subpage.html

{% extends 'base.html' %} 

{% block b2%}{{ blockname }}{% endblock %} 
+0

我可以在模板中顯示一個變量 - 沒什麼特別的。我嘗試將一些文本放入父模板的其中一個塊中,但事先我不知道哪一個是哪一個。它在變量* blockname中定義*傳遞給模板(此變量的值是將要更改的塊的名稱)。 F.E.如果* blockname = b2 *,應更改名稱爲* b2 *的塊,但如果* blockname = b100 *,則必須更改名爲* b100 *的塊。 – BUZZY

+0

啊。我明白你現在要問的是什麼......我認爲儘管這樣乾淨地做到這一點是不可能的。我能建議的最好的是模板中的一堆if語句。這有什麼用途?也許我們可以找出更好的方法去做你想做的事。 – KrisF

+0

每個模板都擴展了基本模板,其中有整個網站的菜單。在每個模板中,我都有一個變量,定義您當前所在的網站部分。爲了有可能定義每個按鈕/鏈接的類,我在這個菜單中有鉤子(作爲塊標籤)。我可以把string *「active」*放在每個模板的適當塊中,但是忘記將來改變它會導致錯誤。我想要一個解決方案,您必須將一些代碼僅放入基本模板中 - 此代碼應該使用當前部分的變量來填充正確的書籤鉤子,並使用字符串*「active」*。 – BUZZY

相關問題