2009-08-13 67 views
0

那麼,我想出什麼jeje ....如何評估模板中的{%if%}變量?Django,{%if%}標記評估

我嘗試這個

{% if variable > 0 %} or {% if variable != 0 %} 

但...我得到的錯誤:(

感謝

+1

Django的模板系統是專門爲鼓勵儘可能少的邏輯可能是在模板中,這就是爲什麼在第一標籤系統似乎有限。這個想法是將你的想法轉換到更多的MVC狀態,在這個狀態下你的數據已經準備好,然後到達你的模板。 – 2009-08-13 18:27:07

+0

jinja模板引擎允許此功能在django中正常工作 – Evgeny 2009-10-22 21:57:41

回答

4

退房Django的智能,如果模板標籤http://simonwillison.net/2009/Mar/3/smartif/ http://www.djangosnippets.org/snippets/1350/

它取代了內置的,如果標籤,讓你做對比運營商。

+0

韋德感謝你了,但是我的新Django的,我不知道在哪裏患病把代碼:( 核心 ,在我的觀點,模型等?? 我認爲我需要的片段 – Asinox 2009-08-13 18:35:40

+0

我做到了,謝謝 – Asinox 2009-08-13 19:56:15

+0

你可以把它放在覈心,但如果你更新Django核心,可能會導致問題 我有一個名爲「utils」,我存儲的應用程序我在不同的項目中使用的例程和幫助程序,我只是將smart-if代碼添加到該應用程序的templatetags文件夾中。 – Wade 2009-08-13 21:18:57

0

您應該使用

{% ifnotequal... 
{% ifequal... 

等:)

這裏全是:http://docs.djangoproject.com/en/dev/topics/templates/#topics-templates

+1

您剛剛指出模板概述,完整標記和過濾器列表位於以下位置:http://docs.djangoproject.com/en/dev/ref/templates/builtins/ #ref-templates-builtins-tags – 2009-08-13 18:24:45

+0

問題是,如果我想要這個:{%ifnotequal變量0%},但如果變量是-1,那麼是「真」,我不希望負值將是「真」。 與同爲{%ifequal%} – Asinox 2009-08-13 18:33:45

0

每次遇到小問題時,您都應該閱讀Django出色的文檔,而不是在每次遇到小問題時不斷髮帖。特別是,模板文檔有一個非常好的解釋,爲什麼你所嘗試的是不允許的。

在這種情況下,您可以從Python 0與False相同的事實中受益。所以,你可以有

{% if variable %} 

{% if not variable %} 

否則,使用{% ifequal %}{% ifnotequal %}爲MaRiz解釋。

+1

「輕微」是​​一個意見問題。相信世界上沒有人比你更有經驗。這都是相對的。 Joel Spolsky特別指出,他對這個網站的設想是回答所有問題,甚至是最看似微不足道的問題。現在已經提出這個問題意味着它可能不需要再次提問。你可能花了那段時間,你曾經在開始回答時抱怨,而是使用編輯權限來改善他的問題。 – 2009-08-13 18:34:47

+2

我認爲Joel Spolsky不同意你的觀點,即「不要發佈問題,如果過於簡單,請閱讀文檔」。 – 2009-08-13 18:36:44

+1

即時通訊對不起,我認爲我做的第一件事就是閱讀文檔,不管是否相信,但是在文檔中{%if%}中沒有關於運算符的任何內容,我不知道如果我錯了。 誰說我的例子-1是真的?我需要0或> 0,但如果我從數據庫中提取值,如果值爲-1,那麼{%if variable%}爲真。 對不起。 – Asinox 2009-08-13 18:50:41