2011-08-28 43 views
2

好吧,我寫這篇文章:如何從templatetag返回值插入到{%,如果 - 再次

@register.simple_tag 
def get_something(data, var1, var2): 
    if data: 
     if var1: 
      if var2: 
       return { 'variable': True } 
return return { 'variable': False } 

但這:

{% get_something 1 0 1 %} 
{% if not variable %} 
    ... 
{% endif %} 

仍然沒有工作......始終顯示」。 ..」

回答

3

嘗試直接返回值,並使用這樣的事情:

{% get_something 1 0 1 as variable %} 
{% if not variable %} 
    ... 
{% endif %} 

我認爲這不是模板標籤更新全局模板上下文的目標,因爲很難看到上下文被更新爲模板標籤的用戶。

+0

這似乎不工作(再?):''get_something'收到太多的位置參數'。我也嘗試過使用'{env = envname%}',但它似乎沒有調用templatetag。 (Django 1.6.5)。 – blueyed

+0

@blueyed如果您使用'@ register.assignment_tag'而不是'@ register.simple_tag',它應該按預期工作。看看[文檔](https://docs.djangoproject.com/en/1.10/howto/custom-template-tags/#assignment-tags)。請記住,這從Django 1.9開始已被棄用。 – Hopiu