Google App Engine数据库最后一个条目

时间:2013-12-09 21:24:20

标签: python google-app-engine

我是GAE和语言python的新手,我想做任何非常简单的事情,我有评论框(http://soltexfirstapp.appspot.com),我想要的是,检查是否有人在之前写了一个新评论用户提交新的并提醒他一个方框“评论框有新评论,你想继续吗?!是还是不是?”。我对python语法感到困惑,特别是对于查询的。

我的代码工作......

喊叫。吡啶

import webapp2
import datetime
import time
from google.appengine.ext import webapp
from google.appengine.ext import db
from google.appengine.ext.webapp \
 import template



class Shout(db.Model):
    message = db.StringProperty(required=True)
    when = db.DateTimeProperty(auto_now_add=True)
    who = db.StringProperty()

class MainPage(webapp2.RequestHandler):
    def get(self):
        shouts = db.GqlQuery('SELECT * FROM Shout ' 
'ORDER BY when ASC')
        values = {
            'shouts': shouts
        }

        # my attempt to make and print the query
        # aaa = db.GqlQuery('SELECT * FROM Shout ' 
                            'ORDER BY when DESC LIMIT 1')
        # self.response.out.write('Query is: %s', aaa)

        self.response.out.write(template.render('main.html',values))

    def post(self):
        shout = Shout (
            message = self.request.get('message'),
            who = self.request.get('who'))
        shout.put()
        self.redirect('/')

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

main.html中

<!DOCTYPE html>
<html>
<head>
    <title>Comment System</title>
    <link rel="stylesheet" href="./css/main.css" media="screen" />
</head>
<body>

<h1>Cloud Comment System</h1>

{% for shout in shouts %}

<div> 
    <div id="fl">
        {{shout.when}}
        from
        {% ifequal shout.who "" %}
            Anonymous
        {% else %}
        {{shout.who}}
        {% endifequal %}
    </div>

    {{shout.message}}

</div>
{% endfor %}

<form action="" method="post" accept-charset="utf-8">
    <p>From:<input type="text" name="who" value="" id="who"></p>
    <p>Message:<input type="text" name="message" value="" id="message"></p>
    <p><input type="submit" name="" value="comment"></p>
</form>

</body>
</html>

我非常感谢任何帮助。感谢

1 个答案:

答案 0 :(得分:0)

首先,您应该始终说出代码中不起作用的内容,错误等等......目前您的求助请求模糊不清。

所以我会试着猜猜你的目标。

在您的查询中,您通过ASC订购(日期表示最早的项目)。 您应该首先订购DESC,因为您的描述表明您需要最新的评论。

你的查询应该是

shouts = db.GqlQuery('SELECT * FROM Shout ORDER BY when DESC')

在您的代码中,您有一些额外的'个字符。

您可能不想循环显示所有Shout,因此您应该使用fetch或simliar限制结果集。

此外,您正在获取没有发送日期的Shout(即与之比较的日期)。我假设您在问题描述中想要在特定日期/时间之后 new Shout's。您需要确定该日期是什么,并将其用作查询中的比较。