У 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.

Это отражено в их Философии дизайна:

Цель состоит в том, чтобы не изобретать язык программирования. Цель состоит в том, чтобы предложить достаточно функциональные возможности программирования, такие как ветвление и цикл, что важно для принятия решений, связанных с презентацией.