如果条件为django,如何发送值进行过滤? 编辑

问题描述

在我的html中,我想将此值发送到我的过滤器,但出现此错误

ValueError位于/ 以10为底的int()无效文字:“ {{request.user.id}}”

我的HTML:

<span><i{% if post|liked:"{{request.user.id}},{{post.id}}" %} class="fa fa-heart pointer" {% else %} class="fa fa-heart-o pointer" {% endif %} aria-hidden="true"></i> <span class="text-dark">{{ post.likes.count }}</span>

我的过滤器:

@register.filter()
@stringfilter
def liked(value,args):
    values = args.split(',')
    user_id,post_id = values
    user = User.objects.get(id=user_id)
    post = Post.objects.get(id=post_id)
    is_liked = post.likes.get(id=user_id)
   
    if is_liked != None:
        return True
    else:
        return False

感谢您的回答。

解决方法

这只是模板中的user.id而不是request.user.id

<span><i{% if post|liked:"{{user.id}},{{post.id}}" %} class="fa fa-heart pointer" {% else %} class="fa fa-heart-o pointer" {% endif %} aria-hidden="true"></i> <span class="text-dark">{{ post.likes.count }}</span>

编辑

由于过滤器未将variable用作variable。因此,可能是这样的:

{% with args=user.id|add:","|add:post.id %}
    <span><i{% if post|liked:args %} class="fa fa-heart pointer" {% else %} class="fa fa-heart-o pointer" {% endif %} aria-hidden="true"></i> <span class="text-dark">{{ post.likes.count }}</span>
{% endwith %}

请参见with

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...