Python Jinja2

index.cgi


#!/usr/local/bin/python2.7
# -*- coding: utf-8 -*-

import cgi
from   jinja2 import Environment, FileSystemLoader

#----------------------------------------------------------
# CONFIG
#----------------------------------------------------------
_ENCODE             = 'utf-8'
_HTML_TEMPLATE_FILE = 'index.tmpl'

#----------------------------------------------------------
# Jinja2 Wrapper
#----------------------------------------------------------
class HTTPtemplate(object):

    def __init__(self, template_file):

        self.endocing      = 'utf-8'
        self.data          = {}
        self.template_dir  = './'
        self.template_file = template_file

    def set_encode(self,encode):

        self.encode = encode

    def set_template_dir(self, template_dir):

        self.template_dir = template_dir

    def set_data(self, key, value):

        try :
            value = unicode(value, self.encode)

        except :
            value = value

        self.data[key] = value

    def http_output(self):

        env  = Environment(loader=FileSystemLoader(self.template_dir, encoding=self.encode))
        tmpl = env.get_template(self.template_file)
        print tmpl.render(data=self.data).encode(self.encode)


#----------------------------------------------------------
# MAIN
#----------------------------------------------------------
def main():

    #----------------------------------------------------------
    # POST|Obtenez des données GET
    #----------------------------------------------------------
    http_requests = cgi.FieldStorage()

    #----------------------------------------------------------
    #Génération HTML
    #----------------------------------------------------------
    http = HTTPtemplate(_HTML_TEMPLATE_FILE)
    http.set_encode(_ENCODE)
    http.set_data('charset', _ENCODE)
    http.set_data('request_get' , http_requests.getvalue('get'  , None))
    http.set_data('request_post', http_requests.getvalue('post' , None))
    http.http_output()

if __name__ == '__main__' : main()

index.tmpl


Content-Type: text/html

<!DOCTYPE html>
<head>
<meta charset="{{data.charset}}">
<title>INDEX</title>
</head>
  <body>
    <form method="post" action="./?get=Ah">
    <textarea name="post" cols="50" rows="1"></textarea>
    <input type="submit" value="submit">
    <p>GET :{{data.request_get}}</p>
    <p>POST:{{data.request_post}}</p>
    </form>
  </body>
</html>

Recommended Posts

Python Jinja2
Python
Moteur de template Jinja2 2 Python
python kafka
Les bases de Python ⑤
Résumé Python
Python intégré
mémorandum jinja2
Notation d'inclusion Python
Étudier Python
Compte à rebours Python 2.7
Mémorandum Python
Python FlowFishMaster
Service Python
astuces python
Mémo Python
Notation d'inclusion Python
Python Singleton
Les bases de Python ④
Mémorandum Python 2
Incrément Python
atCoder 173 Python
[Python] fonction
Installation de Python
Installer Python 3.4.3.
Essayez Python
Mémo Python
Itératif Python
Algorithme Python
Python2 + mot2vec
[Python] Variables
Fonctions Python
Python sys.intern ()
Tutoriel Python
Fraction Python
underbar python C'est ce que
Résumé Python
Démarrer python
[Python] Trier
Remarque: Python
Les bases de Python ③
Sortie du journal python
Les bases de Python
[Scraping] Scraping Python
Mise à jour Python (2.6-> 2.7)
mémo python
Mémorandum Python
Python #sort
ufo-> python
Python nslookup
apprentissage de python
[Rpmbuild] Python 3.7.3.
Python au prorata (1)
mémorandum python
Télécharger Python
mémorandum python
Mémo Python
a commencé python