【问题标题】:is there a way to set return value to an variable in django有没有办法在 django 中为变量设置返回值
【发布时间】:2021-01-29 11:42:12
【问题描述】:

我有一个像这样的自定义模板标签:

@register.simple_tag
def getLikesByUser(likedFilter, loggedInUserID): 
  likedPeople = likedFilter
  personLoggedIn = loggedInUserID
  for personLiked in likedPeople:
    if personLoggedIn == personLiked.id:
      return True
  return False

这将在我的模板中返回 true 或 false,是否可以选择将此返回设置为模板中的变量?

这是怎么称呼的:

{% getLikesByUser Post.likes.filter request.user.id  %} 

我想把它放在一个变量中,这样我可以进一步检查是否为真,如果不是,则显示按钮。

谢谢

【问题讨论】:

    标签: python django function django-forms django-templates


    【解决方案1】:

    我们有 with 在 django 中设置变量。所以,你可以这样做:

    {% load getLikesByUser %}
    <body>
        {% with likes_by_user=Post.likes.filter|getLikesByUser:request.user.id %}
        
            {% if likes_by_user %}
                # Do sthg
            {% endif %}
    
        {% endwith %}
    </body>
    

    【讨论】:

    • 所以当我这样做时: {% with likes_by_user=|getLikesByUser Post.likes.filter request.user.id %} {% if likes_by_user %} # Do sthg {% endif %} 可以在 |getLikesByUser 的开头找不到变量。 {% 以 %} 结尾。我收到错误
    • 错误是什么??注意:不是{% with likes_by_user=|getLikesByUser Post.likes.filter request.user.id %},而是这个:{% with likes_by_user=Post.likes.filter|getLikesByUser:request.user.id %}
    • 即使我按照上面的说明使用,我也会收到以下错误:无效的过滤器:'getLikesByUser' 我将其加载为 {% load custom_template_tag %},其中我将 getLikesByUser 函数设置为我的原始帖子。不知道为什么会出现这个错误
    • 不是{% load custom_template_tag %} ,而是这个:{% load getLikesByUser %}
    • 一旦我这样做了,我得到的 'getLikesByUser' 不是一个注册的标签库。必须是以下之一:....我确实重新启动了我的服务器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多