2014-07-04 46 views
1

我正在創建一個願望清單類型的網站,其中用戶最後一次更改的行突出顯示。然而,我在做這件事時遇到了麻煩,因爲顯然在上下文變量上使用'==',並且對象的ID沒有返回true,儘管它們看起來都一樣。如何將上下文變量與Django模板中的SQL ID進行比較?

例如,這是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 }},和它們在正確的位置都顯示相同的數字,但該語句的謂詞似乎沒有評估爲True。我試過用in替換==,我嘗試換掉他們的位置,我嘗試了一切,但似乎沒有任何工作。

任何想法?

回答

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, }) 
+0

唔,做到了。這發生在我身上,但我不知道如何轉換爲模板內的int/string ......在傳遞之前沒有想到要這麼做 - 謝謝! – Staunch

+0

[在這個問題中有一些提示可以做到這一點](http://stackoverflow.com/questions/4831306/need-to-convert-a-string-to-int-in-a-django-template),但一般來說,你想在你的視圖中保留這種邏輯,而不是你的模板。 –

相關問題