【发布时间】:2009-07-22 01:41:31
【问题描述】:
好的,上次你们很快而且乐于助人,所以我要回井了;)
免责声明:我是 python 新手,对 App Engine 非常陌生。我正在尝试对 AppEngine 教程中的示例进行简单修改。
我的日期值存储在我的 Memory 类中:
class Memory(db.Model):
author = db.UserProperty()
content = db.StringProperty(multiline=True)
date = db.DateProperty(auto_now_add=True)
现在我希望能够查找某个日期的记录。我不确定该怎么做,所以我尝试了一些方法,包括:
memories = db.GqlQuery("SELECT * from Memory where date = '2007-07-20')
and
memories = Memory.all()
memories.filter("date=", datetime.strptime(self.request.get('date'), '%Y-%m-%d').date())
and
memories = Memory.all()
memories.filter("date=", self.request.get('date'))
但是每次我运行它时,我都会收到 ImportError。坦率地说,我什至不确定如何解析应用程序失败时收到的这些错误消息,但我很高兴能够查找某个日期的内存记录。
编辑:下面是完整的源代码
import cgi
import time
from datetime import datetime
from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.ext import db
class Memory(db.Model):
author = db.UserProperty()
content = db.StringProperty(multiline=True)
date = db.DateProperty()
class MainPage(webapp.RequestHandler):
def get(self):
self.response.out.write('<html><body>')
memories = db.GqlQuery('SELECT * from Memory ORDER BY date DESC LIMIT 10')
for memory in memories:
self.response.out.write('<b>%s</b> wrote: ' % memory.author.nickname())
self.response.out.write('<em>%s</em>' % memory.date)
self.response.out.write('<blockquote>%s</blockquote>' % cgi.escape(memory.content))
self.response.out.write("""
<div style="float: left;">
<form action="/post" method="post">
<fieldset>
<legend>Record</legend>
<div><label>Memory:</label><input type="text" name="content" /></textarea></div>
<div><label>Date:</label><input type="text" name="date" /></div>
<div><input type="submit" value="Record memory" /></div>
</fieldset>
</form>
</div>
<div style="float: left;">
<form action="/lookup" method="post">
<fieldset>
<legend>Lookup</legend>
<div><label>Date:</label><input type="text" name="date" /></div>
<div><input type="submit" value="Lookup memory" /></div>
</fieldset>
</form>
</div>""")
self.response.out.write('</body></html>')
class PostMemory(webapp.RequestHandler):
def post(self):
memory = Memory()
if users.get_current_user():
memory.author = users.get_current_user()
memory.content = self.request.get('content')
memory.date = datetime.strptime(self.request.get('date'), '%Y-%m-%d').date()
memory.put()
self.redirect('/')
class LookupMemory(webapp.RequestHandler):
def post(self):
memories = db.GqlQuery("SELECT * FROM Memory WHERE date = '2009-07-21'")
for memory in memories:
self.response.out.write('<b>%s</b> wrote: ' % memory.author.nickname())
self.response.out.write('<em>%s</em>' % memory.date)
self.response.out.write('<blockquote>%s</blockquote>' % cgi.escape(memory.content))
application = webapp.WSGIApplication([('/', MainPage), ('/post', PostMemory), ('/lookup', LookupMemory)], debug=True)
def main():
run_wsgi_app(application)
if __name__ == '__main__':
main()
【问题讨论】: