2012-06-01 118 views
20

我是新的django。我堅持在模板中比較字符串的問題。Django模板比較字符串

我使用ifnotequal標記來比較字符串。但它不起作用。

我嘗試輸出變量:

{{ request.user.username }} 
{{ article.creator }} 

在這裏,我比較:

{% ifnotequal request.user.username article.creator %} 
    {# output something #} 
{% endifnotequal %} 

但是當我做了硬編碼:它的工作原理。

{% ifnotequal "justin" "mckoy" %} 
    {# output something #} 
{% endifnotequal %} 

是什麼問題? article.creator來自數據庫,user.username來自請求。

任何人都可以幫助我解決這個問題嗎?

+0

'article.creator'是一個字符串嗎? 你可以發佈模型嗎? – yprez

+0

另外,在你的例子中它是'request.user.usname'而不是'request.user.username'。錯字? – yprez

+0

@Yuri - 我的例子錯別字錯誤.. – justin

回答

13

article.creatorUserrequest.user.username是一個字符串。改爲嘗試比較request.user

+3

當Django模板中有兩件事情不相等時,它通常是變量的類型。我試着比較1和「1」發生了幾次。 –

+0

@Simeon - 謝謝,那有效.. :) – justin

+0

如果'article.creator.username'與'request.user.username'比較,那麼它也可以工作 – justin

35

試試這個:

{% ifnotequal article.creator|stringformat:"s" request.user.username %} 
+4

這個答案需要更多的投票!我的頭撞在牆上! – pete

+0

它像字符串打印,但它不是一個字符串 - 也適用於UUID。 – jsbueno

+0

感謝你們,我試圖過濾一個被大量空白包圍的變量,這就是解決方案 – Bwyss

18

對於字符串比較模板中使用

{% if name == "someone" %} 
    ............ 
    ............ 
{% endif %} 

和不等於

{% if name != "someone" %} 
    ............ 
    ............ 
{% endif %}