我正在使用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>
{{ meta_k }}<br>
{% else %}<br>
Venkat, Rao, engineer, inventor, entrepreneur, projects, blue dart, control systems, labview<br>
{% endif %}<br>
{% endblock %}
当我知道meta_k不应为null时,默认为else。可以在Google代码上找到完整的代码here。
我做错了什么?
答案 0 :(得分:3)
只有你的建议很可能是代码中的错误,对我们来说,如果不运行整个项目就很难调试。
所以我建议你在命令行上进行实验,看看你是否可以通过简单的步骤复制bug,以便我们可以尝试修复它。我相信在这个过程中你会发现有问题的部分
e.g。我看到我的简单上下文正确呈现了您的模板
>>> from django.template import Context, Template
>>> s = """{% 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 %}"""
>>> t = Template(s)
>>> c = Context({'meta_k':['a','b','c']})
>>> t.render(c)
u'<br>\n<br>\n ['a', 'b', 'c']<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 %}
请注意没有分号
如果我删除分号就可以了。那太愚蠢了。