如何在Django模板中比较上下文变量和SQL ID?

时间:2014-07-04 03:37:00

标签: python django templates

我正在创建一个wishlist类型的站点,其中突出显示了用户上次更改的行。但是,我很难做到这一点,因为显然在上下文变量上使用'=='并且对象的ID没有返回true,尽管它们看起来都是一样的。

例如,这是我正在进行的render通话:

def wishlist(request):
    ...
    user_change = request.COOKIES.get('voted_or_added', False)
    return render(request, 'xbox_wishlist/wishlist.html', { 'user_change': user_change, })

然后在我的模板中,我有:

...
<tbody>
    {% for game in ranked_wishlist %}
        {% if user_change == game.id %}
    <tr style="background: #80FF80;">
        {% else %}
    <tr>
        {% endif %}
...

我已尝试同时显示{{ game.id }}{{ user_change }},并且它们都在正确的位置显示相同的数字,但if语句的谓词似乎没有评估到真的。我已经尝试用==替换in,我尝试过交换他们的位置,我已经尝试过一切,但似乎没有任何工作。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

From the Django documentation

  

<强> HttpRequest.COOKIES

     

包含所有Cookie的标准Python字典。键和值是字符串。

所以问题是user_change是一个字符串,但game.id是一个整数。在python中是一个整数,它的字符串表示不相等。

请改为尝试:

user_change = int(request.COOKIES.get('voted_or_added', -1))
return render(request, 'xbox_wishlist/wishlist.html', { 'user_change': user_change, })