У webapp есть 'elseif' или 'elif' в тегах шаблона
мой код:
Здравствуйте! ~~~
{% 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'?
спасибо
Ответы
Ответ 1
webapp
сам по себе не имеет шаблонов, но вы можете использовать шаблоны Django - по умолчанию, те, кто вернулся в Django 0.96 (как вы видите из древних документов, на которые я указывал, для того, чтобы вложенный if
был физически вложен внутри блока else
). Вы можете использовать более обновленную версию Django (см. здесь для получения более подробной информации), запустив код Python с помощью
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from google.appengine.dist import use_library
use_library('django', '1.1')
но в то время как это дает вам язык шаблонов, который значительно улучшился во многих отношениях, эти улучшения не включают тег elseif
или elif
- вам все равно нужно явно вставить вторичный if
внутри первичного else
.
Ответ 2
Обновить: как говорит Джефф Бауэр в комментарии ниже, Django 1.4 содержит тег elif
.
Оригинальный ответ:
В книге Джанго есть следующее:
Нет тега {% elif %}
. Используйте вложенные теги {% if %}
, чтобы выполнить одно и то же:
Итак, вы должны сделать
if
else
if
else
для достижения if-elsif-else.
Это отражено в их Философии дизайна:
Цель состоит в том, чтобы не изобретать язык программирования. Цель состоит в том, чтобы предложить достаточно функциональные возможности программирования, такие как ветвление и цикл, что важно для принятия решений, связанных с презентацией.
Ответ 3
Есть также два фрагмента Django, которые позволяют использовать тег 'elif' в языке шаблона
http://djangosnippets.org/snippets/1572/
http://djangosnippets.org/snippets/2243/