现在,我可以在python shell中运行查询并使它返回True,但是当尝试在html jinja模板中进行复制时,我无法使它返回相同的True结果。
我有一个查询,将Post.object.get(id = 1)作为变量。
P1=Post.objects.get(id=1)
然后跑了
P1.liked_by.all()
确实会返回结果:
<QuerySet [<User: User object(10)>, <User: User object (12), <User: User
object (13)>]>
然后我为在该查询中找到的用户放入一个变量:
JV= User.objects.get(id=10)
此用户ID在P1.liked_by.all()查询中找到,因此现在当我测试是否找到该用户ID时。
JV in P1.liked_by.all()
True
现在,当我尝试在我的 html jinja模板中访问此文件时。我无法检查它并返回true。即使我可以在页面上打印这些值。
这是我的Views.py:
def topic(request,topic_id):
if not 'u_id' in request.session:
return redirect('/')
print(request.session)
context={
"topic":Topic.objects.get(id=topic_id),
"user":User.objects.get(id=request.session["u_id"]),
"posts":Post.objects.filter(topic=topic_id),
}
return render(request, 'topic.html', context)
这是我的HTML:
{% for post in posts %}
<div class="cast-content">
<h3>Casting submit by <u>{{post.user.user_name}}!</u></h3>
<p>number of likes:{{post.liked_by.count}}</p>
<p>post id:{{post.id}}</p>
<p>user_id in session= {{user.id}}</p>
<p>liked by:{{post.liked_by.all}}</p>
<img src="{{post.image.url}}" class="post-pix" alt="...">
<br>
<p>post liked_by values: {{post.liked_by.values}}</p>
{% if user.id in post.liked_by.all %}
<a href="/like-remove/{{topic.id}}/{{post.id}}">Un-Like</a>
{% else %}
<form action="/add-like" method="post">
{% csrf_token %}
<input type="hidden" name="post_id" value="{{post.id}}">
<input type="hidden" name="topic" value="{{topic.id}}">
<input type="submit" value="Like">
</form>
{% endif %}
{% if user.id == post.user.id %}
<a href="/post-remove/{{topic.id}}/{{post.id}}">Remove</a>
{% endif %}
</div>
{% endfor %}
我不知道为什么可以打印模板中的值,但是当我运行{%if%}语句以检查表中是否存在它时找不到它,因此默认为{%else% }声明。非常感谢任何帮助!