使用模板标记的Django TemplateSyntaxError

时间:2014-10-05 10:54:06

标签: python django templatetags

我正在尝试在我的项目中使用此应用。 https://github.com/streema/django-favit 我已经可以使用这个应用程序的fav-unfav部分。我还想为每个用户列出用户的收藏夹。在阅读我的部分,它说使用它,它将被列出,但我有

的错误
{% with user_favorites <user> "baslik.Entry" as favorite_list %}
    {% for fav_obj in favorite_list %}
        {{ fav_obj }}
    {% endfor %}
{% endwith %}

错误:

TemplateSyntaxError at /
u'with' expected at least one variable assignment

这是user_favorites的模板标记部分:

@register.assignment_tag
def user_favorites(user, app_model=None):
    """
    Usage:

    Get all user favorited objects:

        {% with user_favorites <user> as favorite_list %}
            {% for fav_obj in favorite_list %}
                {# do something with fav_obj #}
            {% endfor %}
        {% endwith %}

    or, just favorites from one model:

        {% with user_favorites <user> "app_label.model" as favorite_list %}
            {% for fav_obj in favorite_list %}
                {# do something with fav_obj #}
            {%
        {% endwith %}
    """

    return Favorite.objects.for_user(user, app_model)

如何摆脱这个错误?感谢。

2 个答案:

答案 0 :(得分:1)

在文档中,一个相当普遍的惯例是尖括号中的任何内容都是一个占位符,可以用实际值替换。在这种情况下,<user>应该被包含实际用户的对象替换。

{% with user_favorites request.user ... 
但是,我必须说,文档仍然没有任何意义。你不能在这样的with语句中使用赋值标记 - 即使纠正了用户问题,这仍然无效。令人困惑的是,整个文档中重复使用相同的语法,但它根本不起作用。

我认为这只是文档中的一个错误,并怀疑如果你只是删除“with”这个词就可以了。

答案 1 :(得分:0)

要在django中使用自定义模板标记,需要在模板中明确load它。 在模板的开头添加此行(但在{% extends ... %}之后,如果有的话):

{% load favit_tags %}

看起来django-favit README错过了这一步。