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|Get GET data
    #----------------------------------------------------------
    http_requests = cgi.FieldStorage()
    #----------------------------------------------------------
    #HTML generation
    #----------------------------------------------------------
    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