Google App Engine:从数据存储中提取数据并将其显示在网页上

时间:2014-07-09 13:59:53

标签: python google-app-engine

我使用Python作为我的后端语言与Google App Engine构建Web应用程序。在下面的代码中,我尝试从我的“调查”中提取数据。数据库,并试图在' perma.html'上显示它。网页。但是,我得到一个空白文档,而不是该页面上所需的数据信息。这是我的应用程序的源代码:

main.py

import os
import webapp2
import jinja2
from google.appengine.ext import db
from random import randint

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))

#databases

class Survey(db.Model):
    vam_id = db.StringProperty()
    subject = db.StringProperty(required = True)
    description = db.TextProperty(required = True)
    created = db.DateTimeProperty(auto_now_add = True)
    q1 = db.TextProperty(required = True)
    o11 = db.TextProperty(required = True)
    o12 = db.TextProperty(required = True)
    o13 = db.TextProperty(required = True)
    q2 = db.TextProperty(required = True)
    o21 = db.TextProperty(required = True)
    o22 = db.TextProperty(required = True)
    o23 = db.TextProperty(required = True)
    q3 = db.TextProperty(required = True)
    o31 = db.TextProperty(required = True)
    o32 = db.TextProperty(required = True)
    o33 = db.TextProperty(required = True)
    q4 = db.TextProperty(required = True)
    o41 = db.TextProperty(required = True)
    o42 = db.TextProperty(required = True)
    o43 = db.TextProperty(required = True) 
    q5 = db.TextProperty(required = True)
    o51 = db.TextProperty(required = True)
    o52 = db.TextProperty(required = True)
    o53 = db.TextProperty(required = True)

"""a = Survey(vam_id = "01", subject = "Metro", description = "A survey on Mumbai Metro",
            q1 = "How do you find rates fixed for Metros?", 
            o11 = "Appropriate", o12 = "Somewhat appropriate", o13 = "Inappropriate",
            q2 = "How satisfied are you with the customer service",
            o21 = "Extremely satisfied", o22 = "Moderately satisfied", o23 = "Not satisfied",
            q3 = "How satisfied are you with the interior of Mumbai Metro?",
            o31 = "Extremely satisfied", o32 = "Moderately satisfied", o33 = "Not satisfied",
            q4 = "Do you think travelling by Metro is more convenient than other transport?",
            o41 = "Yes", o42 = "No", o43 = "Can't say",
            q5 = "How will you rate Mumbai Metro?",
            o51 = "Very good", o52 = "Good", o53 = "Bad")  

a.put()         """  

class MainPage(Handler):
    def get(self):
        self.render("homepage.html")

class NewSurvey(Handler):
    def get(self):
        self.render("newsurvey.html")
    def post(self):
        vam_id = str(randint(1, 500))
        subject = self.request.get("title")
        description = self.request.get("description")
        q1 = self.request.get("q1")
        o11 = self.request.get("o11")
        o12 = self.request.get("o12")
        o13 = self.request.get("o13")
        q2 = self.request.get("q2")
        o21 = self.request.get("o21")
        o22 = self.request.get("o22")
        o23 = self.request.get("o23")
        q3 = self.request.get("q3")
        o31 = self.request.get("o31")
        o32 = self.request.get("o32")
        o33 = self.request.get("o33")
        q4 = self.request.get("q4")
        o41 = self.request.get("o41")
        o42 = self.request.get("o42")
        o43 = self.request.get("o43") 
        q5 = self.request.get("q5")
        o51 = self.request.get("o51")
        o52 = self.request.get("o52")
        o53 = self.request.get("o53")

        a = Survey(vam_id = vam_id, subject = subject, description = description, q1 = q1,
                    o11 = o11, o12 = o12, o13 = o13, q2 = q2,
                    o21 = o21, o22 = o22, o23 = o23, q3 = q3,
                    o31 = o31, o32 = o32, o33 = o33, q4 = q4,
                    o41 = o41, o42 = o42, o43 = o43, q5 = q5,
                    o51 = o51, o52 = o52, o53 = o53)
        a.put()            

class Existing(Handler):
    def get(self):
        surveys = Survey.all()
        self.render("existingsurvey.html", surveys = surveys)

class PermaSurvey(Handler):
    def get(self):
        vam = self.request.get("vam_id")
        su = Survey.all().filter("vam_id =", vam).get()
        self.render("perma.html", su = su)

app = webapp2.WSGIApplication([('/', MainPage),
                               ('/new', NewSurvey),
                               ('/existing', Existing),
                               ('/perma', PermaSurvey)], debug=True)

existingsurvey.html

<html>
<head>
    <title>Existing surveys</title>
</head>
<body>
    {% block content %}
        {% for s in surveys %}
            <a href = "/perma?vam_id = {{s.vam_id}}">{{s.subject}}</a> <br>
            {{s.description}}
            <br><br><br><br>
        {% endfor %}
    {% endblock %}
</body>
</html>

perma.html

<html>
<head>
    <title>Perma Survey</title>
</head>
<body>
{% block content %}

    <h1>{{su.subject}}</h1>



{% endblock %}   
</body>
</html>

基本上,我提取了&#39; vam_id&#39;通过将其作为我的existingsurvey.html代码中的参数传递,从我的数据库条目中获取值。之后,我在我的PermaSurvey&#39;中使用了这个值。处理程序,以便从我的数据存储区中过滤特定条目。但是,当我通过&#39; su&#39; &#39; perma.html&#39;中的对象网页,我无法显示我的数据存储条目的内容。相反,我得到一个空白文件。发生了什么?

0 个答案:

没有答案