2012-06-21 4 views
0

Python을 사용하여 Google App Engine에 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

파이썬 문자열 대체가 엔티티를 순환하지 않으므로 Lipis에서 제안한 템플릿 엔진이 필요합니다. – dragonx

답변

2

이 방법은 아주 잘 확장되지 않고 올바른 방법이 아니다. Google App Engine에서 Python 용 templatesGetting Started 자습서에서 어떻게 사용되고 있는지 확인하십시오.

일반적인 생각

당신이 HTML 템플릿과 다음 몇 가지 매개 변수를 전달하여 작성하는 것입니다, 당신은 사용자에게 for -loops, if -statements 및 many more 수있을 것입니다.