【问题标题】:Django - use template tags in if statement [duplicate]Django - 在if语句中使用模板标签[重复]
【发布时间】:2018-08-18 13:36:33
【问题描述】:

我看到了类似的问题,但没有一个能解决我的问题。

我有一个这样的简单模板标签:

@register.simple_tag
def liked_by_user(post_id, user):
    try:
        PostModel.objects.get(pk=post_id).like_set.get(user=user)
        return True
    except:
        return False

我想在这样的 if 语句中使用它:

{% if liked_by_user post.pk request.user %}
        doing somethin...
    {% else %}
        doing somethin...
{% endif %}

我能做什么?

【问题讨论】:

  • 在你的后列表查询集中返回这个标志。
  • @IvanStarostin 其实是对的,但我想学习标签过滤解决方案
  • 嗨 Mehdi - 这是在单个帖子页面上还是在帖子列表上?
  • @MichaelRoberts 嗨,这是一篇文章

标签: python django django-templates django-tagging


【解决方案1】:

我会把你的模板设置成这样:

{% liked_by_user "post_id" "request.user" as liked_by_user_flag %}

{% if liked_by_user_flag %} 
   doing somethin...
{% else %} 
   doing somethin...
{% endif %}

但是,这种 直观 感觉不像是模板标签那种情况......但我还不能 100% 确定你的用例,从你的问题来看。

【讨论】:

  • 应该是喜欢_by_user_flag的
  • 模板语法错误
  • 应该是:{% like_by_user "post_id" "request.user" as like_by_user_flag %} {% if like_by_user_flag %} 做某事... {% else %} 做某事... {% endif %}
  • @Mehdibmp 嗨 Mehdi - 你说的很对,把我的变量搞混了!抱歉,希望一般指导和解决方案能奏效。
猜你喜欢
  • 1970-01-01
  • 2011-11-28
  • 2013-08-02
  • 1970-01-01
  • 2013-10-17
  • 2023-01-22
  • 2021-09-20
  • 2015-12-08
  • 2014-03-20
相关资源
最近更新 更多