Django查询可在Shell中使用,但Jinja无法在模板中识别

时间:2019-05-07 22:23:39

标签: python html django jinja2

现在,我可以在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% }声明。非常感谢任何帮助!

0 个答案:

没有答案