есть ли в веб-приложении теги elseif или elif в шаблонах - PullRequest
10 голосов
/ 01 июня 2010

мой код: Здравствуйте! ~~~

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

16 голосов
/ 01 июня 2010

webapp сам по себе не имеет шаблонов, но вы можете использовать шаблоны Django - по умолчанию , те, что были в Django 0,96 (как вы видите из древних документов, которые я указывал to, что требует, чтобы вложенный 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 первичной.

14 голосов
/ 01 июня 2010

Обновление : , как сказал Джефф Бауэр в комментарии ниже , Django 1.4 предоставляет тег elif .

Оригинальный ответ следующим образом:


В Книге Джанго есть следующее:

Нет тега {% elif %}. Используйте вложенные теги {% if %}, чтобы выполнить то же самое:

Итак, вы должны сделать

if
else
  if
  else

для достижения if-elsif-else.

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

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

0 голосов
/ 17 января 2012

Есть также два Django Snippets, которые включают тег 'elif' на языке шаблонов

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...