#!/usr/bin/python # -*- coding: utf-8 -*- import cgitb cgitb.enable() # tulostetaan HTTP-protokollan edellyttämä mediatyyppi ja dokumentissa # käytetty merkistö. WWW-palvelin täydentää loput HTTP-otsakkeet # Jos tämä on väärin niin tuloksena on aina server error! print u"""Content-type: text/html; charset=UTF-8\n""" import cgi import urllib import os from jinja2 import Template, Environment, FileSystemLoader # antaa polun alikansiossa olevaan jinja.html-tiedostoon: # ei tarvitse huolehtia siitä onko polku riippuvainen palvelimen asetuksista # os.environ['SCRIPT_FILENAME'] palauttaa polun suoritettavaan ohjelmaan (jinja.cgi) # on syytä huomata, että tämä polku ei ole sama kuin tiedostopolku halava/jalava-palvelimissa # os.path.dirname tipauttaa polusta muut kuin kansiot pois eli poistaa jinja.cgin # os.path.join liittää os.path.dirnamen palauttaman polun ja 'templates' yhdeksi toimivaksi poluksi try: tmpl_path = os.path.join(os.path.dirname(os.environ[u'SCRIPT_FILENAME']), u'templates') except: # jos tänne päädytään www-palvelimessa niin koko sovellus kaatuu... # tänne tullaan komentoriviltä testattaessa, koska SCRIPT_FILENAME-ympäristömuuttujaa ei ole tmpl_path = u"templates" # alustetaan jinjan kaipaama ympäristö ja asetetaan myös autoescape käyttöön eli jinja automaattisesti # korjaa erikoismerkit html:ään kelpaavaan muotoon try: env = Environment(autoescape=True, loader=FileSystemLoader(tmpl_path), extensions=[u'jinja2.ext.autoescape']) except: # jinja2.ext.autoescape ei toimi halavassa/jalavassa env = Environment(autoescape=True, loader=FileSystemLoader(tmpl_path)) # ladataan varsinainen template-tiedosto template = env.get_template(u'jinja2.html') apu = True lista = [u"aa", u"bb", u"cc", u"dd", u"ee", u"ää"] # tulostettaessa on enkoodattava haluttuun merkistöön # jos merkistöä ei anneta yrittää python käyttää ascii-merkkejä ja tuloksena on skandinaavisten # merkkien takia virhe print template.render(nimi=apu, lista=lista).encode("UTF-8")