webapp在模板标签中有'elseif'或'elif'吗?

时间:2010-06-01 01:29:52

标签: python google-app-engine if-statement

我的代码是: 您好!~~~

{% 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'

webapp没有'else if'吗?

感谢

3 个答案:

答案 0 :(得分:16)

webapp本身没有模板,但您可以使用Django模板 - 默认情况下 Django 0.96后面的模板(正如您从古代文档中看到的那样) to,这要求嵌套的if物理嵌套在else块内。您可以使用

启动Python代码,使用更新版本的Django(有关详细信息,请参阅here
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

from google.appengine.dist import use_library
use_library('django', '1.1')

虽然这确实为您提供了一种在很多方面得到极大改进的模板语言,但这些改进包含elseifelif标记 - 您仍然必须将辅助if显式嵌套在主要else分支内。

答案 1 :(得分:14)

更新as Jeff Bauer says in a comment below,Django 1.4 provides an elif tag

原始答案如下:


The Django Book有这样的说法:

  

没有{% elif %}标记。使用嵌套的{% if %}标记来完成同样的事情:

所以,你必须这样做

if
else
  if
  else

实现if-elsif-else。

这反映在他们的Design Philosophies

  

目标不是发明一种编程语言。目标是提供足够的编程式功能,例如分支和循环,这对于做出与演示相关的决策至关重要。

答案 2 :(得分:0)

还有两个Django Snippets在模板语言中启用'elif'标签

http://djangosnippets.org/snippets/1572/

http://djangosnippets.org/snippets/2243/