Python 谷歌应用引擎数据库最后一项
我是GAE和python语言的新手,我想做任何非常简单的事情,我有评论框(),我只想在用户提交新评论之前检查是否有人写了新评论,并用一个框提醒他:“评论框有新评论,你想继续吗?!是还是否?”。我对python语法感到非常困惑,尤其是查询语法 我的代码正在运行 喊叫。pyPython 谷歌应用引擎数据库最后一项,python,google-app-engine,Python,Google App Engine,我是GAE和python语言的新手,我想做任何非常简单的事情,我有评论框(),我只想在用户提交新评论之前检查是否有人写了新评论,并用一个框提醒他:“评论框有新评论,你想继续吗?!是还是否?”。我对python语法感到非常困惑,尤其是查询语法 我的代码正在运行 喊叫。py import webapp2 import datetime import time from google.appengine.ext import webapp from google.appengine.ext impor
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>
评论系统
云评论系统
{%用于呼喊中的呼喊%}
{{呼喊。什么时候}
从…起
{%ifequal.who”“%}
匿名的
{%else%}
{{呼喊,谁}}
{%endifequal%}
{{shout.message}}
{%endfor%}
发件人:
信息:
我真的很感谢你的帮助。谢谢在开始时,您应该始终说出代码中不起作用的内容、错误等。。。目前你的求助请求含糊不清 所以我会试着猜你想要什么 在您的查询中,您是按ASC订购的(日期表示最早的商品最先订购)。 您应该先订购DESC,最新的,因为您的描述表明您需要最新的评论 您的查询应该是
shouts = db.GqlQuery('SELECT * FROM Shout ORDER BY when DESC')
在代码中有一些额外的“
字符
您可能不想循环并显示所有的Shout,因此应该使用fetch或类似的方法限制结果集
此外,您正在获取的
Shout
s没有前哨日期(即与之比较的日期)。根据您的问题描述,我假设您在某个日期/时间后需要新的呼叫。您需要确定该日期,并将其用作查询中的比较。是的,您是对的,我应该说我的代码正常工作。我使用ASC的订单,最后一个是最新的,所以对我来说没问题。关于额外的字符,两种方法都是正确的,请查看谷歌开发者制作的6:49分钟的视频。谢谢你的“获取”提示,我现在没有考虑这个问题,但这是一个好主意,我会尝试实现。我想要的是,比较用户提交评论之前和之后的最后一个“时间”,如果在提交评论之后和发布评论之前不一样,应该提醒用户。你可能需要为此使用异步javascript请求,否则如果我正确理解你说的话,用户需要提交两次文章