Reputation: 66727
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
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
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
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