2012-06-21 166 views
0

如何使用Python在Google App引擎中以HTML格式顯示值?檢索數據存儲

我檢索了這些值並將它們存儲在一個變量中。

我試過以下,但它給了我一個error.I想顯示使用for循環檢索的記錄,但不知道請幫助。

代碼:

import cgi 
import webapp2 

from google.appengine.ext import db 

form="""<!DOCTYPE html> 
<html> 
    <head> 
    <title>ascii</title> 
</head> 
<body> 
<h1>/ascii</h1> 
<form method="post"> 
    <label> 
<div>Title</div> 
<input type="text" name="text" value="%(text)s"> 
</label> 
<br> 
<label> 
    Art 
    <br><textarea cols="50" rows="12" name="art" value="%(art)s"></textarea> 
</label><br> 
<input type="submit"> 
<div style="color:blue">%(error)s</div> 

</form> 
    <hr> 
<hr> 

    ***{%for art in arts %} 
<div> 
<div>{% art.title %}</div> 
<pre>{%art.art%}</pre> 
</div>*** 
</body> 
</html>""" 
class Art(db.Model): 
    title = db.StringProperty(required=True) 
    art=db.TextProperty(required=True) 
    created=db.DateTimeProperty(auto_now_add=True) 

class MainHandler(webapp2.RequestHandler): 
    def write_form(self,error="",text="",art="",arts=""): 
     ***arts=db.GqlQuery("select * from Art order by created DESC")*** 

     self.response.out.write(form %{"error":error, 
            "text":text, 
            "art":art)}          
    def escape_html(self,s): 
     return cgi.escape(s,quote=True) 
    def get(self): 
     self.write_form() 

    def post(self): 

     text1=self.escape_html(self.request.get("text")) 
     art1=self.escape_html(self.request.get("art")) 
     if text1 and art1: 
      a=Art(title=text1,art=art1) 
      a.put() 
      self.redirect("/")      

     else: 
      self.write_form("Both fields required",text1,art1)  

app = webapp2.WSGIApplication([('/', MainHandler)], 
          debug=True) 
+0

python字符串替換不會循環通過您的實體,您需要一個模板引擎,如Lipis所建議的。 – dragonx

回答

2

這種方法不結垢非常好,這是不正確的方法。查看templates如何在Google App的Getting Started Python教程中使用。

總的想法是,你寫你的HTML在一個模板,然後通過一些參數傳遞給它,你將能夠用戶for -loops,if -statements和many more