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

zjm*_*126 10 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 %}
Run Code Online (Sandbox Code Playgroud)

错误是:

TemplateSyntaxError: Invalid block tag: 'elif'
Run Code Online (Sandbox Code Playgroud)

webapp没有'else if'吗?

谢谢

Mar*_*off 16

更新:正如Jeff Bauer在下面的评论中所说,Django 1.4 提供了一个elif标签.

原答案如下:


Django Book有这样说:

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

所以,你必须这样做

if
else
  if
  else
Run Code Online (Sandbox Code Playgroud)

实现if-elsif-else.

这反映在他们的设计理念中:

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

  • 从Django 1.4开始,模板现在支持elif标记:https://docs.djangoproject.com/en/dev/releases/1.4/#minor-features (3认同)

Ale*_*lli 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')
Run Code Online (Sandbox Code Playgroud)

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