从appengine数据库中检索数据并以表单形式显示

时间:2012-07-12 23:13:14

标签: google-app-engine

我正在使用python在CMS上进行appengine工作,我有一个表单页面,就像wordpress在你输入页面的标题,内容和其他元数据时的工作原理。让我们说这是AddPage

保存页面后,数据将被存储,并且文章索引页面上会显示一个链接。就像点击帖子时的wordpress一样。我想要做的是,一旦在索引页面上点击链接,用户就会被重定向到一个与AddPage完全相同的页面,但它已经准备好了可以编辑的数据。

如果我错过了什么,我该怎么做?

class EditPageHandler(webapp2.RequestHandler):
    def get(self, articleID):
        page_details = db.GqlQuery("SELECT * FROM TitlePage WHERE key_name = '" + articleID + "'" )
    pageDetails_list = page_details.fetch(10)
    template = jinja_environment.get_template('templates/editcourse.html')
    self.response.out.write(template.render({'page_details':pageDetails_list}))

html模板会显示如下内容:

<input id="author" type="text" name="author" maxlength="120" value="{{ page_details.Author }}">

我没有收到任何错误,这不起作用,所以有些事情不在这里:

我也尝试过这样输出:     

仍然没有任何帮助。

2 个答案:

答案 0 :(得分:1)

我设法解决了这个问题,我上面使用的方法都是错误的而不是有效的:

class EditPageHandler(webapp2.RequestHandler):
    def get(self, articleID):
          page_details = TitlePage.get_by_key_name(articleID)
          template = jinja_environment.get_template('templates/editcourse.html')
          self.response.out.write(template.render({'detail':page_details}))

和我刚刚做的html:

<input id="author" type="text" name="author" value="{{ detail.Author }}">

它有效:)

感谢gwynhowell提出改进代码的建议,我做了更改,非常感谢Sebastian Kreft提出的让我走在正确轨道上的建议。

答案 1 :(得分:0)

Buddy,根据您发布的代码,显然pageDetails_list = page_details.fetch(10)将返回列表/数组。

但是在模板方面,你做的事情就像 <input id="author" type="text" name="author" maxlength="120" value="{{ page_details.Author }}"> 这实际上是错误的 page_details 期待对象。但是你经过那里清单。 所以它应该像这样循环,

{% for page_detail in page_details %}
   //do stuff..
{% endfor %}

我认为,这应该适合你。