【发布时间】:2010-10-03 03:35:46
【问题描述】:
我在 django 中使用模板。我遇到了未呈现上下文的问题。 meta_k 为空。 meta_description 不是。
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>
{{ meta_k }}<br>
{% else %}<br>
Venkat, Rao, engineer, inventor, entrepreneur, projects, blue dart, control systems, labview<br>
{% endif %}<br>
{% endblock %}
当我知道 meta_k 不应该为空时,这默认为 else。完整的代码可以在 Google Code 上找到here。
我做错了什么?
【问题讨论】:
-
如果结果是一个空字符串或空列表,或者任何在Python中计算结果为
False的东西,包括None,都会进入else部分。 -
我知道结果不是空的或无,因为我在监视窗口中看到变量的值
-
很可能是你的代码有错误,然后在 django 中,可以尝试将 sp 传递给 context 并打印出 projects.html 中的值,这样你就可以确定会出现什么值?
-
你能否展示一个描述问题并可以在命令行上运行的独立 django 代码,如果你尝试这样做,你会发现问题,或者我们会看到错误
-
所以我这样做并且它有效: html = t.render(Context({'sp': sp})) 然后在 project.html 我将其更改为: {% if sp %} { { sp.meta_keywords}} {% else %} Venkat,Rao,工程师,发明家,企业家,项目,blue dart,控制系统,labview {% endif %},这行得通
标签: python django google-app-engine