2013-05-07 53 views
0

如何傳遞一個用戶參數,例如:傳遞參數用於For循環在Django模板的方法

{% for document in documents %} 
    {% for status in document.status_for user %} 
     {{status}}  
    {% endfor %} 
{% endfor %} 

產生異常:

異常類型:TemplateSyntaxError異常值: '關於' 語句 應該使用 '在Y X' 的格式爲:對狀態中 document.status_for用戶

易這個方法?

編輯: 忘了一個小細節,這是循環!

+0

你不能傳遞參數,在Django模板方法。 – Rohan 2013-05-07 14:21:01

+0

= \如何像{%URL document_print document.id%}工作? – 2013-05-07 14:23:53

+0

嘗試:'{%for user in | document.status_for%}' – karthikr 2013-05-07 14:24:47

回答

1

你需要將它發送到模板之前,操作數據。

# views.py 

    # ... inside view 
    statuses = list() 
    for document in documents: 
     statuses.append(document.status_for(request.user)) 

    return render_to_response('path/to/template.html', {'statuses': statuses}, context_instance=RequestContext(request)) 

而且在你的模板:

{% for status in statuses %} 
    {{ status }}  
{% endfor %} 
+0

謝謝@pztrick!@mawimawi同樣的答案。正確! – 2013-05-07 14:31:17

1

您可以創建一個自定義模板標籤:

// In your app_folder/templatetags/custom_filter.py 

@register.filter 
def user_status(status, user): 
    // Do work on these values 

而且用它在你看來

{% for status in document.status_for %} 
    {{status|user_status(user)}}  
{% endfor %} 

你可以找到更多關於自定義模板標籤的信息在Django,here

+0

不要使用'{{status | user_status(user)}}傳遞參數' 嘗試: '{{status | user_status:user} }' – 2013-05-08 14:32:18