2013-05-07 122 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