`
sillycat
  • 浏览: 2490895 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

google(二)python使用和发布到google

阅读更多
google(二)python使用和发布到google

我在google申请了帐号,呵呵,想试试在那里发布我新写的简单python应用。
首先学习google的python入门文档:
http://code.google.com/intl/zh-CN/appengine/docs/python/gettingstarted/

5 使用数据存储区
按照文档上的,修改了helloworld.py,保存问候信息和用户信息到数据存储区域:
import cgi
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 Greeting(db.Model):
  author = db.UserProperty()
  content = db.StringProperty(multiline=True)
  date = db.DateTimeProperty(auto_now_add=True)

class MainPage(webapp.RequestHandler):
  def get(self):
    self.response.out.write('<html><body>')
   
    #greetings = db.GqlQuery("SELECT * FROM Greeting ORDER BY date DESC LIMIT 10")
    #两种写法都可以,下面一种是简写
    greetings = Greeting.gql("ORDER BY date DESC LIMIT 10")
    for greeting in greetings:
      if greeting.author:
        self.response.out.write('<b>%s</b> wrote:' % greeting.author.nickname())
      else:
        self.response.out.write('An anonymous person wrote:')
      self.response.out.write('<blockquote>%s</blockquote>' %
                              cgi.escape(greeting.content))
    # Write the submission form and the footer of the page
    self.response.out.write("""
          <form action="/sign" method="post">
            <div><textarea name="content" rows="3" cols="60"></textarea></div>
            <div><input type="submit" value="Sign Guestbook"></div>
          </form>
        </body>
      </html>""")

class Guestbook(webapp.RequestHandler):
  def post(self):
    greeting = Greeting()
    if users.get_current_user():
      greeting.author = users.get_current_user()
    greeting.content = self.request.get('content')
    greeting.put()
    self.redirect('/')

application = webapp.WSGIApplication(
                                     [('/', MainPage),
                                      ('/sign', Guestbook)],
                                     debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()

启动服务google_appengine/dev_appserver.py /home/sillycat/work/easyappenginepython/
访问http://localhost:8080就可以看到效果了。录入了几个信息后,后被记录并列表出来了。

清除数据并启动服务:
google_appengine/dev_appserver.py --clear_datastore /home/sillycat/work/easyappenginepython/

数据存储区详细文档:
http://code.google.com/intl/zh-CN/appengine/docs/python/datastore/

另外文档上介绍了几个写GQL过滤的方法:
使用位置参数:
if users.get_current_user():
      greetings = Greeting.gql("WHERE author = :1 ORDER BY date DESC",
                               users.get_current_user())
使用命名参数:
greetings = Greeting.gql("WHERE author = :author ORDER BY date DESC",
                               author=users.get_current_user())
用API filter来查询:
greetings = Greeting.all()
greetings.filter("author =", users.get_current_user())
greetings.order("-date")

6.使用模板
嘿嘿,google使用了类似于django的模板,修改helloworld.py文件如下:
import cgi
import os
from google.appengine.ext.webapp import template
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 Greeting(db.Model):
  author = db.UserProperty()
  content = db.StringProperty(multiline=True)
  date = db.DateTimeProperty(auto_now_add=True)

class MainPage(webapp.RequestHandler):
  def get(self):
    greetings_query = Greeting.all().order('-date')
    greetings = greetings_query.fetch(10)
    if users.get_current_user():
      url = users.create_logout_url(self.request.uri)
      url_linktext = 'Logout'
    else:
      url = users.create_login_url(self.request.uri)
      url_linktext = 'Login'

    template_values = {
      'greetings': greetings,
      'url': url,
      'url_linktext': url_linktext,
      }
    path = os.path.join(os.path.dirname(__file__), 'index.html')
    self.response.out.write(template.render(path, template_values))

class Guestbook(webapp.RequestHandler):
  def post(self):
    greeting = Greeting()
    if users.get_current_user():
      greeting.author = users.get_current_user()
    greeting.content = self.request.get('content')
    greeting.put()
    self.redirect('/')

application = webapp.WSGIApplication(
                                     [('/', MainPage),
                                      ('/sign', Guestbook)],
                                     debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()
在helloworld目录增加文件/helloworld/index.html如下:
<html>
  <body>
    {% for greeting in greetings %}
      {% if greeting.author %}
        <b>{{ greeting.author.nickname }}</b> wrote:
      {% else %}
       An anonymous person wrote:
      {% endif %}
      <blockquote>{{ greeting.content|escape }}</blockquote>
    {% endfor %}

    <form action="/sign" method="post">
      <div><textarea name="content" rows="3" cols="60"></textarea></div>
      <div><input type="submit" value="Sign Guestbook"></div>
    </form>
    <a href="{{ url }}">{{ url_linktext }}</a>
  </body>
</html>

django模板引擎详细文档:
http://www.djangoproject.com/documentation/0.96/templates/

7.使用静态文件
修改配置文件app.yaml:
handlers:
- url: /stylesheets
  static_dir: stylesheets
- url: /.*
  script: helloworld/helloworld.py
在工程中新建目录stylesheets
新建文件/stylesheets/main.css,内容如下:
body {
  font-family: Verdana, Helvetica, sans-serif;
  background-color: #DDDDDD;
}
再在文件/helloworld/index.html加上这个CSS的应用:
  <head>
  <link type="text/css" rel="stylesheet" href="/stylesheets/main.css" />
  </head>
ok,访问http://localhost:8080就能看到加了背景色的效果了。

app.yaml文件配置参考:
http://code.google.com/intl/zh-CN/appengine/docs/python/config/appconfig.html

8.上传应用
访问主页:
https://appengine.google.com/
我在上面注册了帐号,新增了一个app
sillycatkiko
我的sillycat,luohuazju貌似都有了,所以就只能用这个了。

修改项目的app.yaml文件如下:
application: sillycatkiko
version: 1
runtime: python
api_version: 1

handlers:
- url: /stylesheets
  static_dir: stylesheets
- url: /.*
  script: helloworld/helloworld.py


使用命令行发布:
sillycat@sillycat-desktop:~/tools$ google_appengine/appcfg.py update /home/sillycat/work/easyappenginepython/

中途让我输入了用户名和密码。
访问地址:
http://sillycatkiko.appspot.com/
就能看到我刚才上传的应用了。简单的文档实验完毕。继续可以看看GOOGLE的其他文档和别人的应用。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics