django模板不会呈现完整的上下文

时间:2010-10-03 03:35:47

标签: python django google-app-engine

我正在使用django的模板。我遇到的问题是Context没有呈现。 meta_k为null。 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不是null。这是我在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。可以在Google代码上找到完整的代码here

我做错了什么?

2 个答案:

答案 0 :(得分:3)

只有你的建议很可能是代码中的错误,对我们来说,如果不运行整个项目就很难调试。

所以我建议你在命令行上进行实验,看看你是否可以通过简单的步骤复制bug,以便我们可以尝试修复它。我相信在这个过程中你会发现有问题的部分

e.g。我看到我的简单上下文正确呈现了您的模板

>>> 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 :(得分:-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 %}

请注意没有分号

如果我删除分号就可以了。那太愚蠢了。