问题描述
在我的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