2012-05-08 11 views
0

所以我有一個簡單的模板問題。在URL視圖中,我傳遞了一個名爲'style'的var,並且我傳遞了一大堆模型信息的字典。爲了得到正確的過它:django模板如果==不能正確解析

{{ style }} 
{% for recipe in recipes %} 
    {{ recipe.recipe_style }} 
    {% if recipe.recipe_style == style %} 
     {{ recipe.recipe_style }} 
    {% endif %} 
{% endfor %} 

那麼該塊應該返回是:

晚餐晚餐晚餐晚餐晚餐

因爲在配方模型只有兩個條目,都與「晚餐」設置爲recipe_style(charfields),並且風格通過視圖和urlconf(「r'^(?P [-A-Za-z0-9 _] +)/」,它從url的http抓取'Dinner' ://.../晚餐/')。返回內容:

晚餐晚餐晚餐

這是因爲if語句回來假。但爲什麼? 「晚餐」==「晚餐」!我唯一的猜測是格式問題?在將視圖傳遞給視圖之前,我嘗試了style = str(style),但仍然無法正常工作。

編輯:這裏是顯示了殼:

>>> RecipeStyle.objects.all() 
[<RecipeStyle: Dinner>, <RecipeStyle: Lunch>, <RecipeStyle: American>, <RecipeStyle: Italian>, <RecipeStyle: French>] 
>>> recipe = Recipe.objects.get(pk=1) 
>>> recipe.recipe_style 
<RecipeStyle: Dinner> 

,它工作在控制檯:

>>> if recipe.recipe_style == RecipeStyle.objects.get(pk=1): 
...  print "poop" 
... 
poop 

那麼,爲什麼不能在模板?

回答

0

我做錯了。我的if語句是過濾傳遞給模板的查詢集;愚蠢的,對嗎?我通過在視圖中過濾配方模型,然後傳遞過濾的查詢集來修復它。

+0

對不起。有一段時間沒有開過。我想對這個社區很好。真的很抱歉。 – jonc

0

您確定recipe.recipe_style實際上等於'Dinner'?可能會有額外的空間導致此失敗,但瀏覽器仍將顯示爲相同(因爲瀏覽器忽略多個顯示空間)。

pre標籤或再版印刷在你看來像幾招試試包裝:

print repr(recipe.recipe_style) 

然後重新加載頁面,並檢查開發服務器控制檯,它應該顯示的字符串值(引號)。