2010-04-01 11 views
6

Questo sta utilizzando il framework dell'app Web, non Django.Google App Engine (python): TemplateSyntaxError: le istruzioni 'for' con cinque parole devono terminare in 'rovesciato'

Il seguente codice di modello mi sta dando un TemplateSyntaxError: 'per' le dichiarazioni con cinque parole dovrebbe finire in 'invertita' errore quando provo a rendere un dizionario. Non capisco cosa stia causando questo errore. Qualcuno potrebbe far luce su di esso per me?

{% for code, name in charts.items %} 
    <option value="{{code}}">{{name}}</option> 
{% endfor %} 

sto rendendolo utilizzando la seguente:

class GenerateChart(basewebview): 

    def get(self): 
     values = {"datepicker":True} 
     values["charts"] = {"p3": "3D Pie Chart", "p": "Segmented Pied Chart"} 
     self.render_page("generatechart.html", values) 

class basewebview(webapp.RequestHandler): 
    ''' Base class for all webapp.RequestHandler type classes ''' 
    def render_page(self, filename, template_values=dict()): 
     filename = "%s/%s" % (_template_dir, filename) 
     path = os.path.join(os.path.dirname(__file__), filename) 
     self.response.out.write(template.render(path, template_values)) 

risposta

13

This is using the web app framework, not Django.

Ma quadro a parte, è necessario utilizzare template di Django - e apparentemente in una vecchia versione, che non supporta la stile "disimballaggio automatico" di for - probabilmente la versione 0.96 predefinita per App Engine. Per utilizzare una qualsiasi parte di più Django moderna (compresi i "solo i modelli") è necessario disporre di un file settings.py e fare:

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

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

secondo the docs. Dopo di che puoi from django import template e utilizzerai la versione 1.1 del motore di template di Django.

+0

Martellipedia lo fa di nuovo! Grazie. – Phil

+0

@Phil, siete i benvenuti! -) –