web.py+gae=我的第一个留言板【二】

下面接着说说google application engine和webpy配套的问题。在我完成留言板的时候,这方面的资料还是很少,中文资料更少,希望webpy社区能够壮大啊。

gae据说很有Django的风格,也是内置Django的,而web.py则需要自备。因此,在应用目录中应该放入web.py解压后得到的web目录。否则会导致Import error: no module named web

详细的发布过程,可以参考chinaunix的这篇文章:http://bbs.chinaunix.net/viewthread.php?tid=1487470 [笔记]Google App Engine上试用web.py 

由于gae的限制,应用的模板文件需要编译后才能在gae上执行读取,否则会导致No module named templates 。上面的文章有具体的解决办法。

 注意,源代码的app.run()需要改成main=app.cgirun()才能正常工作。 否则会导致ImportError: No module named flup.server.fcgi

 另外,我在Ubuntu下多次上传都失败了,提示Import error: no module named web,无奈之下转到win中就成功上传了,不确定是图形界面的google app engine launcher比较厉害还是python sdk的appserver有问题。

gae上面只能使用google的数据库,使用称为gql的查询语言。

要定义一个表: 

from google.appengine.ext import db 

 class data(db.Model):

content=db.StringProperty(multiline=True)

date=db.DataTimeProperty(auto_now_add=True)

title=db.StringProperty(multiline=False)

myKey=db.StringProperty(multiline=False)

 为了索引记录,我用了一个笨方法,在记录中增加一个myKey字段来记录每个记录的Key值。Key是google用来定位每一条记录的内置属性。通过str函数,可以从key得到唯一的字串。

  

 查询一条记录:

db.get(db.Key(myKey))

批量查询:

db.GqlQuery("SELECT * FROM data ORDER BY date DESC") 

 插入记录:

record=data()

#设置record的相关属性

record.put() 

删除记录:

q=db.get(db.Key(myKey))

db.delete(q)

 更多关于gae的数据库信息,可以参考gae的官方文档(有中文版)。

与python自带的web server不同,在gae中print语句也是直接输出到浏览器而不是服务器的日志中。 像是一个典型的cgi应用。

比较有参考价值的文章:http://hi.baidu.com/xusx/blog/item/801704fa5d84259258ee90dd.html 手把手教程,没读完

            http://baiduer.net/2010/03/05/使用webpy创建一个blog/   另一个手把手。。。

最后推荐几个用python写的blog:   http://maoxingxu.appspot.com 这个是国内的技术人写的。

http://www.k4ml.com/archive/old/page165.html 这个风格很简洁。。。

http://webpy.appspot.com   这个非常值得参考,似乎就是webpy的人写出来的。

http://micolog.appspot.com/zh-cn 目前比较通用的blog,可以直接使用。 

                   

我的留言本源代码:/Files/Lifehacker/myApp.7z 

ps:appspot需要FQ访问 

 

 

原文地址:https://www.cnblogs.com/Lifehacker/p/webpy_with_gae.html