2017-02-03 85 views
0

//編輯無效塊標記

我使用標準模板語言,而不是神社。標準模板語言不支持set標記。

如何使用jinja聲明新變量?

在下面的代碼塊的結果的第二行到一個錯誤:

{% set msg_class = "" %} 

錯誤消息:

上線13無效的塊標記:「設置」,預期「的elif」,「其他」或'endif'。你忘了註冊或加載這個標籤嗎?代碼

休息:

{% if msg %} 
    {% set msg_class = "" %} 
    {% if status == 1 %} 
    {% set msg_class = "alert alert-success" %} 
    {% elif status == 3 %} 
    {% set msg_class = "alert alert-danger" %} 
    {% elif status == 4 %} 
    {% set msg_class = "alert alert-warning" %} 
    {% else %} 
    {% set status = 2 %} 
    {% set msg_class = "alert alert-info" %} 
    {% endif %} 
{% endif %} 

使用像下面的線程,我發現一個數組,似乎真的醜到我。它是唯一的解決方案嗎?

Can a Jinja variable's scope extend beyond in an inner block?

+0

你確定你使用的神社?這是標準Django模板語言的錯誤。 –

+0

我想如果我在html模板中使用代碼,它被稱爲jinja?我錯了嗎? https://en.wikipedia.org/wiki/Jinja_(template_engine) – user2871190

+1

是的,你錯了。 Jinja是一個獨立的模板系統,Django支持,但不是默認模板系統。您正在使用標準模板語言,該語言在Django網站上有詳細記錄,並且不支持'set'標籤。 –

回答

1

爲什麼不能簡化它這個樣子?

{% set classes = ['success', 'info', 'danger', 'warning'] %} 
{% if status not in [1,3,4] %} 
    {% set status = 2 %} 
{% endif %} 
{% set msg_class = "alert alert-"+classes[status-1] %} 
+0

謝謝,這種方式更好!這不是我的問題解決方案。 – user2871190

+0

@jrbedar在Django引擎中沒有標籤'集合'悲傷。每個人都認爲他們實際上是jinja2。這就是爲什麼我一直在尋找解決這個問題的答案 – holms