zjm1126
zjm1126

Reputation: 66727

does webapp has 'elseif' or 'elif' in template tags

my code is : Hello!~~~

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

the error is :

TemplateSyntaxError: Invalid block tag: 'elif'

does not webapp has a 'else if ' ?

thanks

Upvotes: 11

Views: 28201

Answers (3)

Mark Rushakoff
Mark Rushakoff

Reputation: 258298

Update: as Jeff Bauer says in a comment below, Django 1.4 provides an elif tag.

Original answer as follows:


The Django Book has this to say:

There is no {% elif %} tag. Use nested {% if %} tags to accomplish the same thing:

So, you have to do

if
else
  if
  else

to achieve an if-elsif-else.

This is reflected in their Design Philosophies:

The goal is not to invent a programming language. The goal is to offer just enough programming-esque functionality, such as branching and looping, that is essential for making presentation-related decisions.

Upvotes: 17

Massagran
Massagran

Reputation: 1821

There are also two Django Snippets that enable the 'elif' tag in the template language

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

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

Upvotes: 0

Alex Martelli
Alex Martelli

Reputation: 882023

webapp per se has no templates, but you can use Django templates - by default, those from back in Django 0.96 (as you see from the ancient docs I pointed to, that requires the nested if to be physically nested inside the else block). You can use a more updated version of Django (see here for more details) by starting your Python code with

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

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

but while this does give you a template language that's vastly improved in many ways, those improvements do not include an elseif or elif tag -- you still have to explicitly nest the secondary if inside the primary one's else branch.

Upvotes: 16

Related Questions