2012-07-02 25 views
1

我有一個Django的模板標籤,設置一個情境變量(它從模型得到一個隨機的形象,但在這個例子中,可以說,它得到一個隨機數)獲得在兩個模板塊

{% get_random_number %} 
{{ my_random_number }} <!-- outputs a random number between 1 and 10 --> 
相同上下文變量

這工作正常。

不過,我需要讓我的頁面內的兩個不同塊相同的「隨機」數:

{% block block1 %} 
    {% get_random_number %} 
    {{ my_random_number }} <!-- outputs a random number between 1 and 10 --> 
{% endblock %} 

{% block block2 %} 
    {% get_random_number %} 
    {{ my_random_number }} <!-- outputs a random number between 1 and 10 --> 
{% endblock %} 

這很明顯,因爲我得到兩個不同的結果(除非偶然的機會,他們不工作相同!)

那麼如何使用templatetag來設置跨兩個模板塊的一致性的上下文變量?

這樣做行不通 - 上下文變量僅限於它在...

{% get_random_number %} 

{% block block1 %} 
    {{ my_random_number }} 
{% endblock %} 

{% block block2 %} 
    {{ my_random_number }} 
{% endblock %} 

創建塊所以..我怎麼能「保存」最初的結果在其他地方,再回想它,如果它已經在通話的早期生成了?

謝謝

回答

1

您可以將模板標記邏輯移動到您的視圖中。在您看來,您只需撥打get_random_number即可獲得1個號碼,然後在模板中的任意位置使用該號碼。

4

也許,你可以使用{% with %}標籤

{% with my_random_number=get_random_number %} 

{% block block1 %} 
    {{ my_random_number }} 
{% endblock %} 

{% block block2 %} 
    {{ my_random_number }} 
{% endblock %} 

{% endwith %}