`
sillycat
  • 浏览: 2555811 次
  • 性别: 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的其他文档和别人的应用。

分享到:
评论

相关推荐

    最好的Google Python 规范中文版

    在Google Python Style Guide的中文版中,我们可以了解到许多关于Python编程和代码风格的规范。这些规范对于保持代码的清晰度、可读性和一致性至关重要。 首先,文档提到了Python语言规范,包括但不限于pychecker的...

    google的python编码规范.pdf

    * 嵌套/局部/内部类和函数:在 Python 中,需要避免使用嵌套类和函数,除非绝对必要。 * 列表推导式:在 Python 中,需要使用列表推导式来创建列表。 * 默认迭代器和操作符:在 Python 中,需要使用默认迭代器和操作...

    python下载谷歌瓦片地图

    这个场景中,我们关注的是使用Python下载带有标签的谷歌卫星地图,这涉及到地图切片(瓦片)的概念,以及如何利用Python的库来实现这一功能。下面将详细介绍这个过程中的相关知识点。 首先,我们需要理解“瓦片地图...

    Python编码规范(Google)

    Google作为业界领先的公司之一,发布了一份详细的Python编码规范指南,旨在帮助开发者编写高质量、易维护的Python代码。本文将根据给定的“Python编码规范(Google)”文件内容,深入解析其中的关键知识点,并提供具体...

    基于Python的离线Google地图操作实现.pdf

    根据文件信息,本文主要讨论了如何利用Python语言实现对离线Google地图瓦片数据文件的操作,内容涵盖了地图瓦片拼接、视图切换、平移、缩放、鼠标响应和轨迹显示等功能。文中所指的离线地图瓦片,通常是指存储在本地...

    使用Python 和 Google搜索制作的聊天机器人_python

    在本文中,我们将深入探讨如何使用Python开发一个聊天机器人,并将其与Google搜索功能结合,以增强机器人的应答能力。这个项目将涵盖Python编程、Web接口设计以及利用API进行网络数据检索的基础知识。 首先,Python...

    Python调用谷歌浏览器打开百度

    5. 使用Python调用谷歌浏览器: - 导入selenium库:`from selenium import webdriver` - 初始化Chrome浏览器对象,这里需要提供ChromeDriver的路径:`driver = webdriver.Chrome(executable_path='path_to_...

    基于Python的谷歌小恐龙游戏

    在IT领域,Python是一种广泛使用的编程语言,因其简洁明了的语法而受到初学者和专业人士的喜爱。本项目“基于Python的谷歌小恐龙游戏”旨在引导初学者进入游戏开发的世界,利用Python的pygame库进行实践操作。pygame...

    Google SDK Enging for Python

    Python作为一门广泛使用的编程语言,以其简洁、易读的语法深受开发者喜爱,而Google SDK Engine for Python则是将这门语言的力量引入到Google的云计算平台中。 **Google SDK(Software Development Kit)**: SDK是...

    Google Python Style Guide中文版(Google Python编码规范)

    网上找到的Goolge Python编码规范。包含两个版本,Google Python Style Guide中文版_li3p.pdf,Google-python-style-guide中文版_guoqiao.pdf。两份文档内容基本一致,guoqiao翻译的格式比较好,带详细书签。

    google-python-exercise

    谷歌的Python练习主要针对初学者和有一定基础的学习者,旨在帮助他们提升Python编程技能。这个练习集由谷歌设计,包含了多个逐步进阶的编程任务,涵盖了Python语言的基础和一些高级特性。通过完成这些练习,你可以...

    Google+Python+Style+Guide中文版.pdf

    在描述中提到的“Google Python 编程风格指南原文出处”说明了这份文档的来源,而整理者“***”则是对文档进行整理和发布的人。这本指南的目录包括了Python风格规范、Python语言规范、类和字符串等主题,这些都是...

    Python-Python实现的Google命令行标志模块

    标题中的"Python-Python实现的Google命令行标志模块"指的是Google GFlags库在Python中的实现。GFlags是一个广泛使用的开源库,它允许开发者为他们的应用程序定义命令行参数或"标志",使得用户能够自定义程序的行为。...

    Google Python 编程规范 PDF(官网整理版)

    对于动态语言如Python,有些警告可能不准确,但是它能够帮助开发者捕获一些容易被忽视的错误,如输入错误和使用未赋值的变量。开发者应该运行pylint并针对代码中的警告采取相应措施,比如抑制不准确的警告或对警告...

    Google Python Style中文版(Google Python编码规范)

    网上收集的Goolge Python编码规范。包含两个版本,Google Python Style Guide中文版_li3p.pdf,Google-python-style-guide中文版_guoqiao.pdf。两份文档内容基本一致,guoqiao翻译的格式比较好,而且带详细书签。

    google 的 python 和 c++ 代码规范

    这里我们将详细探讨Google的Python和C++代码规范。 首先,让我们关注Python部分。Google的Python编码规范旨在提升代码的清晰度和一致性。以下是一些关键要点: 1. **缩进**:Python依赖于缩进来表示代码块,Google...

    Python-goLinux命令行使用谷歌搜索的Python工具

    标题中的“Python-goLinux命令行使用谷歌搜索的Python工具”指的是一个使用Python编程语言开发的命令行工具,该工具能够实现在Linux操作系统环境下通过谷歌搜索引擎进行搜索。这个工具可能为用户提供了在终端中方便...

Global site tag (gtag.js) - Google Analytics