2010-06-01 1 views
10

il mio codice è: Ciao ~~~vuol webapp ha 'elseif' o 'elif' nei tag di template

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

l'errore è:!

TemplateSyntaxError: Invalid block tag: 'elif' 

non fa webapp ha un ' altrimenti se '?

grazie

+1

è cortese upvote-clic sulla freccia-risposte rivolti verso l'alto che sono utile per te. – bernie

+1

Sei stato membro del sito per 5 mesi e hai un totale di 6 upvotes e 5 downvotes. – bernie

+2

Due di tre tag errati. –

risposta

16

webapp di per sé non ci sono modelli, ma è possibile utilizzare i modelli di Django - di default, quelli di nuovo in Django 0.96 (come si vede dagli antichi documenti indicai, che richiede l'nidificato if di essere fisicamente nidificati all'interno del blocco else). È possibile utilizzare una versione più aggiornata di Django (vedi here per maggiori dettagli) avviando il codice Python con

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

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

ma mentre questo ti dà un linguaggio di template che è notevolmente migliorato in molti modi, questi miglioramenti fare non include un tag elseif o elif - è ancora deve nidificare esplicitamente il if secondario all'interno del ramo primario else.

+1

'elif' è ora supportato. Vedi: https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#if – Nosh

13

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

risposta originale come segue:


The Django Book ha questo da dire:

Non c'è {% elif %} tag. Utilizzare nidificati {% if %} tag per ottenere la stessa cosa:

Così, si hanno a che fare

if 
else 
    if 
    else 

per ottenere un se-elsif-else.

questo si riflette nella loro Design Philosophies:

L'obiettivo non è quello di inventare un linguaggio di programmazione. L'obiettivo è quello di offrire un numero sufficiente di funzionalità di programmazione, come la ramificazione e il loop, che è essenziale per prendere decisioni relative alla presentazione.

+0

interessante. Ho sempre pensato che GAE avesse il supporto completo per il modello Jinja2. –

+2

A partire da Django 1.4, i modelli ora supportano il tag elif: https://docs.djangoproject.com/en/dev/releases/1.4/#minor-features –

+0

Aggiornato. Grazie a @Jeff. –