2012-09-19 36 views
0

在main.py代碼呈現數據的HTML問題:的Jinja2不能webapp2的

# -*- coding: utf-8 -*- 

import os 
import time 
import re 
import urllib 
import urllib2 
import MySQLdb 

import webapp2 
import jinja2 

template_dir = os.path.join(os.path.dirname(__file__), 'templates') 
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir), 
      autoescape = True) 


class Handler(webapp2.RequestHandler): 
    def write(self, *a, **kw): 
     self.response.out.write(*a, **kw) 

    def render_str(self, template, **params): 
     t = jinja_env.get_template(template) 
     return t.render(params) 

    def render(self, template, **kw): 
     self.write(self.render_str(template, **kw)) 


class MainPage(Handler): 
    def get(self): 
     self.render('front.html') 

    def post(self): 
     hostip = self.request.get('hostip') 
     username = self.request.get('username') 
     dbname = self.request.get('dbname') 
     password = self.request.get('password') 

     if hostip and username and dbname and password: 
      conn = MySQLdb.connect(host = hostip, user = username, passwd = password, db = dbname) 
      cur = conn.cursor() 
      cur.execute("show tables") 
      alltable = cur.fetchall() 
      tablenames = [] 
      for i in range(len(alltable)): 
       for j in range(len(alltable[i])): 
        tablenames.append(alltable[i][j]) 
      finalname = tablenames 


app = webapp2.WSGIApplication([('/', MainPage)], 
           debug = True) 

def main(): 
    from paste import httpserver 
    httpserver.serve(app, host = '127.0.0.1', port = '8888') 

if __name__ == '__main__': 
    main() 
在front.html

:充滿

<html> 
<body> 
    <h1>ACCESS YOUR SQL</h1> 

    <form method = "post" accept-charset="UTF-8" action="/"/> 
     <label> 
      <div>SQL Host IP</div> 
      <input type="text" name="hosttip" value="{{hostip}}"> 
     </label> 

     <label> 
      <div>UserName</div> 
      <input type="text" name="username" value="{{username}}"> 
     </label> 

     <label> 
      <div>DBname</div> 
      <input type="text" name="dbname" value="{{dbname}}"> 
     </label> 

     <label> 
      <div>Password</div> 
      <input type="password" name="password" value="{{password}}"> 
     </label> 

     <input type="submit" value="submit"> 
    <form> 

    <hr> 

    {% for tablename in finalname %} 

     <form> 
      <input type="checkbox" name="tablename">{{tablename}} 

     </form> 
    {% endfor %} 

</body> 
</html> 

後並運行它,前面。 html沒有任何迴應,無法返回胎記數據,代碼有什麼問題,有人可以幫我修復它嗎? 感謝非常非常非常多的:(

回答

0

當你渲染你的頁面:

self.render('front.html') 

你也必須通過它,你的頁面所引用的數據

試試這個

from flask import render_template 

然後用數據渲染你的頁面

return render_template('front.html',hostip = hostip, username = username) 

現在你可以使用任何你作爲render_template呼叫主機IP通過

{{ hostip }} 

和訪問。

信息對使用此:http://jinja.pocoo.org/docs/templates/#variables

在它的最簡單的用法一樣可以這樣:

>>> from jinja2 import Template 
>>> template = Template('Hello {{ name }}!') 
>>> template.render(name='John Doe') 
u'Hello John Doe!' 

http://jinja.pocoo.org/docs/intro/