0

如何传递用户参数,例如:

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

生成异常:

异常类型:TemplateSyntaxError 异常值:“for”语句应使用格式“for x in y”:for status in document.status_for user

简单的方法?

编辑:忘记了一个小细节,这是在循环中!

4

3 回答 3

2

您需要在将数据发送到模板之前对其进行操作。

# 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 %}
于 2013-05-07T14:25:21.423 回答
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 中自定义模板标签的更多信息

于 2013-05-07T14:34:49.697 回答
1

django 模板变量和查找

只有在没有必需参数时才能调用变量。否则,系统将返回一个空字符串。

如果你真的想这样做,你可以编写自定义模板过滤器或标签

或者适当地编组视图中的数据,然后传递给模板。

于 2013-05-07T14:23:44.487 回答