2010-10-03 65 views
-1

我正在使用帶有django的模板。我在沒有呈現Context的情況下遇到問題。 meta_k爲空。 meta_description不是。django模板不會呈現完整的上下文

t = get_template('projects.html') 
html = t.render(Context({ 
     'completed': completed, 
     'current':current, 
     'description': sp.description, 
     'project_title':sp.name, 
     'img':images, 
     'meta_desc': sp.meta_description, 
     'meta_k:': sp.meta_keywords 
})) 

我可以在eclipse中以調試模式啓動服務器,所以我知道sp.meta_keywords不爲空。這裏是我稱之爲projects.html中的代碼的地方:

{% block meta_keywords %}<br> 
{% if meta_k %}<br> 
&nbsp;&nbsp;&nbsp;&nbsp;{{ meta_k }}<br> 
{% else %}<br> 
&nbsp;&nbsp;&nbsp;&nbsp;Venkat, Rao, engineer, inventor, entrepreneur, projects, blue dart, control systems, labview<br> 
{% endif %}<br> 
{% endblock %} 

當我知道meta_k不應該爲null時,默認爲else。完整的代碼可以在谷歌代碼上找到here

我在做什麼錯?

+1

如果結果是一個空字符串或空列表,或者任何在Python中包含'None'的計算結果爲False,則它將進入else部分。 – 2010-10-03 04:03:55

+0

我知道結果不是空的或無,因爲我在監視窗口中看到變量的值 – 2010-10-03 04:47:13

+1

很可能它是代碼中的錯誤,然後在django中,可以嘗試將sp傳遞到上下文並在projects.html中輸出值,所以你可以確定什麼價值即將到來? – 2010-10-03 04:58:09

回答

-1

所以我只是犯愚蠢的錯誤正確呈現:

在渲染文件我有:

html = t.render(Context({'completed': completed, 'current':current, 'description': sp.description, 'project_title':sp.name, 'img':images, 'meta_desc': sp.meta_description, 'meta_k:': sp.meta_keywords) 

這指的是「META_K:」 注意分號

在模板中我有

{% if meta_k %} 

注別無分號

如果我刪除它的工作原理分號。那很愚蠢。

+1

是的,大部分情況是這樣的,這就是爲什麼如果你試圖簡化問題並找出問題的最終區域,你會發現原因,否則盯着一堆複雜的代碼和思考看起來像一個bug在Django沒有幫助 – 2010-10-03 08:12:32

3

只有你的建議是,它最有可能是你的代碼中的錯誤,對我們來說,如果不運行整個項目就很難進行調試。

因此,我建議你在命令行上進行實驗,看看你是否可以通過簡單的步驟複製該錯誤,以便我們可以嘗試修復它。我相信在這個過程中,您會發現有問題的部分,例如:

我看到你的模板,通過我的簡單背景下

>>> from django.template import Context, Template 
>>> s = """{% block meta_keywords %}<br> 
... {% if meta_k %}<br> 
... &nbsp;&nbsp;&nbsp;&nbsp;{{ meta_k }}<br> 
... {% else %}<br> 
... &nbsp;&nbsp;&nbsp;&nbsp;Venkat, Rao, engineer, inventor, entrepreneur, projects, blue dart, control systems, labview<br> 
... {% endif %}<br> 
... {% endblock %}""" 
>>> t = Template(s) 
>>> c = Context({'meta_k':['a','b','c']}) 
>>> t.render(c) 
u'<br>\n<br>\n&nbsp;&nbsp;&nbsp;&nbsp;[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]<br>\n<br>\n' 
+1

可能的原因:由於'{%if meta_k%}'分支沒有得到執行,意味着meta_k以某種方式計算爲False,或者meta_k爲空或者計算爲false的對象,而是嘗試傳遞「%s」%sp.meta_keywords,看看結果是什麼 – 2010-10-03 05:22:00