webapp的模板标签中有'elseif'或'elif'吗
我的代码是:
Hello!~~~
{% if user %}
<p>Logged in as {{ user.first_name }} {{ user.last_name }}.</p>
{% elif openid_user%}
<p>Hello, {{openid_user.nickname}}! Do you want to <a href="{{openid_logout_url}}">Log out?</p>
{% else %}
<p><a href="/login?redirect={{ current_url }}">google Log in</a>.</p>
<p><a href="/twitter">twitter Log in</a>.</p>
<p><a href="/facebook">facebook Log in</a>.</p>
<p><a href="{{openid_login_url}}">openid Log in</a>.</p>
<iframe src="/_openid/login?continue=/"></iframe>
{% endif %}
出现的错误是:
TemplateSyntaxError: Invalid block tag: 'elif'
难道这个网页应用没有 'else if' 吗?
谢谢
3 个回答
0
还有两个Django的代码片段,可以在模板语言中启用'elif'标签。
17
更新: 正如Jeff Bauer在下面的评论中所说,Django 1.4 提供了一个elif
标签。
原始回答如下:
《Django书籍》中提到:
没有
{% elif %}
标签。可以使用嵌套的{% if %}
标签来实现相同的功能:
所以,你需要这样做
if
else
if
else
来实现if-elsif-else的效果。
这在他们的设计理念中也有体现:
目标不是创造一种编程语言。目标是提供足够的编程风格的功能,比如分支和循环,这对于做出与展示相关的决策是必不可少的。
16
webapp
本身没有模板,但你可以使用 Django 模板 - 默认情况下,这些模板来自很早以前的 Django 0.96(从我提到的老文档可以看到,这要求嵌套的 if
必须物理上放在 else
块里面)。你可以通过在 Python 代码开头添加以下内容,使用更新版本的 Django(更多细节可以查看 这里)。
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from google.appengine.dist import use_library
use_library('django', '1.1')
不过,虽然这确实给你提供了一个在很多方面都有显著改进的模板语言,但这些改进并不包括 elseif
或 elif
标签 -- 你 仍然 需要把第二个 if
明确地放在第一个 else
的里面。