2014-10-05 82 views
0

我试图在我的项目中使用这个应用程序。 https://github.com/streema/django-favit 我已经可以使用这个应用程序的fav-unfav部分。我也想列出每个用户的用户最爱。在读我的角色,它说使用这一点,它会被列出,但我有一个错误带模板标记的Django TemplateSyntaxError

{% 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) 

我该如何摆脱这个错误?谢谢。

回答

0

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

{% with user_favorites request.user ... 

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

我认为这只是文档中的一个错误,并且怀疑如果您只是删除单词“with”,这将起作用。

+0

我还以为它,但它没有帮助。 – malisit 2014-10-05 12:46:47

+0

是的,只是更新了我的答案。 – 2014-10-05 12:49:57

+0

它的工作。谢谢。 – malisit 2014-10-05 17:12:18

0

要在django中使用自定义模板标签,需要在模板中显式地使用load。 在模板的beginnig加入这一行(但{% extends ... %}后,如果你有这样的):

{% load favit_tags %} 

貌似这个步骤是从Django的favit README错过。

+0

我没有提到,但我已经添加了它。这不是关于它。 – malisit 2014-10-05 11:06:36