我有這樣的代碼情況Django的模板過濾器
{%,如果1 |在 '7,10' %floatformat} 是 {%其他%} 沒有 {%ENDIF%}
的返回結果始終設置爲「是」,如何使結果返回「否」 請大家幫忙。 感謝
我有這樣的代碼情況Django的模板過濾器
{%,如果1 |在 '7,10' %floatformat} 是 {%其他%} 沒有 {%ENDIF%}
的返回結果始終設置爲「是」,如何使結果返回「否」 請大家幫忙。 感謝
1|floatformat
回報1
和條件檢查1
是'7,10'
,因爲Django的認爲'7,10'
,因爲它返回True一個字符串。嘗試傳遞一個列表,它將不會返回
很難從你的例子中發現這裏究竟發生了什麼,因爲你用虛擬數據代替了真正從數據庫中出來的東西。如你所寫,結果將始終爲「是」,因爲字符串'7,10'包含字符串'1'。
它聽起來像你想達到什麼是:
如果這個數字是在此列表中,那麼是的,否則就沒有。
讓我們改寫這個模板是一個小更真實:
{% if mynumber in yeslist %} yes {% else %} no {% endif %}
這假定:
我不確定你使用的是什麼f loatformat for在這種情況下。
如果上述斷言不正確,並且您必須使用字符串,那麼您的工作就會更加困難,並且您應該在服務器端處理yeslist。例如,如果yeslist只是一個像「7,10,123,93,9,19,83」這樣的字符串,那麼在模板中確定數字8
是否在列表中將會是不必要的困難。很容易做它在您的觀點:
def myview(request):
ctx = {}
# ... do some work ...
# yeslist now has a string like "7,10,123,93,9,19,83"
ctx['yeslist'] = yeslist.split(',')
# ... do more work, and render the response ...
現在,{% if '8' in yeslist %}
將不再返回一個假陽性,因爲它不是做一個字符串匹配,它做列表成員。
感謝伊丹Gazit,這正是我的意思。我會試着解決這個問題。謝謝 – Adit
Adit:如果你發現我的帖子有幫助,那麼請upvote或接受它! –
即時對不起,我必須澄清'7,10'是數據庫查詢結果是價值7,10(數字分隔逗號) – Adit