- 浏览: 2555811 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
nation:
你好,在部署Mesos+Spark的运行环境时,出现一个现象, ...
Spark(4)Deal with Mesos -
sillycat:
AMAZON Relatedhttps://www.godad ...
AMAZON API Gateway(2)Client Side SSL with NGINX -
sillycat:
sudo usermod -aG docker ec2-use ...
Docker and VirtualBox(1)Set up Shared Disk for Virtual Box -
sillycat:
Every Half an Hour30 * * * * /u ...
Build Home NAS(3)Data Redundancy -
sillycat:
3 List the Cron Job I Have>c ...
Build Home NAS(3)Data Redundancy
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入门文档:
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的其他文档和别人的应用。
发表评论
-
NodeJS12 and Zlib
2020-04-01 07:44 479NodeJS12 and Zlib It works as ... -
Traefik 2020(1)Introduction and Installation
2020-03-29 13:52 339Traefik 2020(1)Introduction and ... -
Private Registry 2020(1)No auth in registry Nginx AUTH for UI
2020-03-18 00:56 440Private Registry 2020(1)No auth ... -
Buffer in NodeJS 12 and NodeJS 8
2020-02-25 06:43 390Buffer in NodeJS 12 and NodeJS ... -
NodeJS ENV Similar to JENV and PyENV
2020-02-25 05:14 482NodeJS ENV Similar to JENV and ... -
Prometheus HA 2020(3)AlertManager Cluster
2020-02-24 01:47 426Prometheus HA 2020(3)AlertManag ... -
Serverless with NodeJS and TencentCloud 2020(5)CRON and Settings
2020-02-24 01:46 340Serverless with NodeJS and Tenc ... -
GraphQL 2019(3)Connect to MySQL
2020-02-24 01:48 252GraphQL 2019(3)Connect to MySQL ... -
GraphQL 2019(2)GraphQL and Deploy to Tencent Cloud
2020-02-24 01:48 454GraphQL 2019(2)GraphQL and Depl ... -
GraphQL 2019(1)Apollo Basic
2020-02-19 01:36 330GraphQL 2019(1)Apollo Basic Cl ... -
Serverless with NodeJS and TencentCloud 2020(4)Multiple Handlers and Running wit
2020-02-19 01:19 316Serverless with NodeJS and Tenc ... -
Serverless with NodeJS and TencentCloud 2020(3)Build Tree and Traverse Tree
2020-02-19 01:19 323Serverless with NodeJS and Tenc ... -
Serverless with NodeJS and TencentCloud 2020(2)Trigger SCF in SCF
2020-02-19 01:18 297Serverless with NodeJS and Tenc ... -
Serverless with NodeJS and TencentCloud 2020(1)Running with Component
2020-02-19 01:17 314Serverless with NodeJS and Tenc ... -
NodeJS MySQL Library and npmjs
2020-02-07 06:21 293NodeJS MySQL Library and npmjs ... -
Python Library 2019(1)requests and aiohttp
2019-12-18 01:12 264Python Library 2019(1)requests ... -
NodeJS Installation 2019
2019-10-20 02:57 577NodeJS Installation 2019 Insta ... -
Monitor Tool 2019(2)Monit on Multiple Instances and Email Alerts
2019-10-18 10:57 271Monitor Tool 2019(2)Monit on Mu ... -
Sqlite Database 2019(1)Sqlite3 Installation and Docker phpsqliteadmin
2019-09-05 11:24 379Sqlite Database 2019(1)Sqlite3 ... -
Supervisor 2019(2)Ubuntu and Multiple Services
2019-08-19 10:53 380Supervisor 2019(2)Ubuntu and Mu ...
相关推荐
在Google Python Style Guide的中文版中,我们可以了解到许多关于Python编程和代码风格的规范。这些规范对于保持代码的清晰度、可读性和一致性至关重要。 首先,文档提到了Python语言规范,包括但不限于pychecker的...
* 嵌套/局部/内部类和函数:在 Python 中,需要避免使用嵌套类和函数,除非绝对必要。 * 列表推导式:在 Python 中,需要使用列表推导式来创建列表。 * 默认迭代器和操作符:在 Python 中,需要使用默认迭代器和操作...
这个场景中,我们关注的是使用Python下载带有标签的谷歌卫星地图,这涉及到地图切片(瓦片)的概念,以及如何利用Python的库来实现这一功能。下面将详细介绍这个过程中的相关知识点。 首先,我们需要理解“瓦片地图...
Google作为业界领先的公司之一,发布了一份详细的Python编码规范指南,旨在帮助开发者编写高质量、易维护的Python代码。本文将根据给定的“Python编码规范(Google)”文件内容,深入解析其中的关键知识点,并提供具体...
根据文件信息,本文主要讨论了如何利用Python语言实现对离线Google地图瓦片数据文件的操作,内容涵盖了地图瓦片拼接、视图切换、平移、缩放、鼠标响应和轨迹显示等功能。文中所指的离线地图瓦片,通常是指存储在本地...
在本文中,我们将深入探讨如何使用Python开发一个聊天机器人,并将其与Google搜索功能结合,以增强机器人的应答能力。这个项目将涵盖Python编程、Web接口设计以及利用API进行网络数据检索的基础知识。 首先,Python...
5. 使用Python调用谷歌浏览器: - 导入selenium库:`from selenium import webdriver` - 初始化Chrome浏览器对象,这里需要提供ChromeDriver的路径:`driver = webdriver.Chrome(executable_path='path_to_...
在IT领域,Python是一种广泛使用的编程语言,因其简洁明了的语法而受到初学者和专业人士的喜爱。本项目“基于Python的谷歌小恐龙游戏”旨在引导初学者进入游戏开发的世界,利用Python的pygame库进行实践操作。pygame...
Python作为一门广泛使用的编程语言,以其简洁、易读的语法深受开发者喜爱,而Google SDK Engine for Python则是将这门语言的力量引入到Google的云计算平台中。 **Google SDK(Software Development Kit)**: SDK是...
网上找到的Goolge Python编码规范。包含两个版本,Google Python Style Guide中文版_li3p.pdf,Google-python-style-guide中文版_guoqiao.pdf。两份文档内容基本一致,guoqiao翻译的格式比较好,带详细书签。
谷歌的Python练习主要针对初学者和有一定基础的学习者,旨在帮助他们提升Python编程技能。这个练习集由谷歌设计,包含了多个逐步进阶的编程任务,涵盖了Python语言的基础和一些高级特性。通过完成这些练习,你可以...
在描述中提到的“Google Python 编程风格指南原文出处”说明了这份文档的来源,而整理者“***”则是对文档进行整理和发布的人。这本指南的目录包括了Python风格规范、Python语言规范、类和字符串等主题,这些都是...
标题中的"Python-Python实现的Google命令行标志模块"指的是Google GFlags库在Python中的实现。GFlags是一个广泛使用的开源库,它允许开发者为他们的应用程序定义命令行参数或"标志",使得用户能够自定义程序的行为。...
对于动态语言如Python,有些警告可能不准确,但是它能够帮助开发者捕获一些容易被忽视的错误,如输入错误和使用未赋值的变量。开发者应该运行pylint并针对代码中的警告采取相应措施,比如抑制不准确的警告或对警告...
网上收集的Goolge Python编码规范。包含两个版本,Google Python Style Guide中文版_li3p.pdf,Google-python-style-guide中文版_guoqiao.pdf。两份文档内容基本一致,guoqiao翻译的格式比较好,而且带详细书签。
这里我们将详细探讨Google的Python和C++代码规范。 首先,让我们关注Python部分。Google的Python编码规范旨在提升代码的清晰度和一致性。以下是一些关键要点: 1. **缩进**:Python依赖于缩进来表示代码块,Google...
标题中的“Python-goLinux命令行使用谷歌搜索的Python工具”指的是一个使用Python编程语言开发的命令行工具,该工具能够实现在Linux操作系统环境下通过谷歌搜索引擎进行搜索。这个工具可能为用户提供了在终端中方便...