我不知道
App Engine是从什么时候开始默认支持Django 1.2的,好像支持的时间不长,我懒得去求证了,反正你去下载最新的SDK准支持,保准支持。要在App Engine下运行Django通常有两种方法:一种是使用
django-nonrel,它是django的一个nosql分支,它可能不太稳定,但如果你要将已有应用移植到app engine上,这是最快捷的方法,你仍然可以使用django的models, forms,应用几乎不需要改动,当然由于两者使用不同类型的数据库,数据存储模型可能要针对app engine微调一下。第二种方法就是使用标准的django,这种方法的缺点是不能再使用django的models,app engine有一套自己的数据模型。这里讨论后一种方法。
虽然app engine自带django,但使用django并不那么简单,当然这么大众的问题早就已经有解决方案了,那就是
google-app-engine-django,从
这里下载压缩包,将它解压。
将解压的目录appengine_helper_for_django改成你应用的名称,例如shared-accounting,同时修改app.yaml中application的值为应用名称。appengine helper最多只支持django 1.1,要支持1.2需要修改它的源代码。编辑appengine_django目录下的__init__.py,在171行将它改成(在'1.1'前面加上'1.2'):
for check_version in ('1.2', '1.1', '1.0'):
try:
use_library('django', check_version)
return
except UnacceptableVersionError:
pass
基本上就是这么简单,然后就可以运行: python manage.py runserver启动服务器,然后就可以在浏览器在访问http://localhost:8000。然后可以用python manage.py startapp创建新的app,之后一切与标准django类似。实际运行中还有一些问题要注意。
Session管理
只要有用户,基本上就会有session,在gae中要开启session很简单,和标准django一样,只需要在settings.py中开启SessionMiddleware就可以了。
用户Authentication
appengine helper替换掉标准django中的authentication,其内部实现使用app engine的认证,这意味着在可以使用gmail帐户(以及其它支持openid的账户),如果你的应用是这样的,那么只需要启用AuthenticationMiddleware就可以了。如果应用想要自己注册帐户,那么首先要禁用appengine替换标准的authentication,还是在appengine_django目录下的__init__.py,将第557行的InstallAuthentication(settings)注释掉,然后从头实现你的用户模型,实现AuthenticationBackend,并在settings.py中启用。
AUTHENTICATION_BACKENDS = ( "your authentication backend",)
最后实现用户注册、登陆等view,整个过程工作量不小。大家可以看我后面给出的demo。
数据访问
app engine和django自带的数据模型有很大不同,其内部一个是BigTable,一个是MySQL等关系型数据库。app engine的数据模型使用的是google.appengine.ext.db.Model,appengine helper提供一层薄的封装appengine_django.models.BaseModel,我没有用BaseModel直接使用appengine的
db.Model,db.Model其实在很大程序上模仿的是django,它甚至还有和django的ModelForm相对应的google.appengine.ext.db.djangoforms。
时区
app engine内部都使用utc时间,我刚开始将settings的TIMEZONE设置成'Asia/Shanghai',结果碰到很诡异的问题,有时时间返回的是本地时间,有时返回的是utc时间。所以在开发app engine应用时最好数据存储都使用utc时间,然后在展现时将它转成本地时间。
说了这么多,希望能给大家在app engine上开发django程序有一些帮助。我写了一个小网站(不仅仅是个demo),它是帮助管理合租、聚餐等集体费用的一个工具性网站,网址在是
http://shared-accounting.appspot.com(需要翻~~墙,推荐IPv6,方法自行google)。代码在
这里。
分享到:
相关推荐
django1.2中文资料,英文,chm格式
Django 1.2 最新的书,介绍Django在电子商务网站中的应用
在 Django 1.2 中引入的重要新特性主要包括: Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的软件设计模式,即模型M,模版T和视图控制器V。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以...
在Google App Engine上运行最新的Django版本这是我博客 的补充代码首先是创建我们的项目目录: mkdir -pv django_appengine/libcd django_appengine通过pip将最新的Django安装到我们的本地目录中: pip install ...
django-guardian:Django 1.2+ 实现了单个对象权限 django-guardian django-guardian 是每个对象权限 [1] 作为授权后端的实现,自 Django 1.5 起支持。 它不适用于较旧的 Django 版本。 文档 在线文档可在 ...
django1.2.3离线文档 html
附录内容包括命令行基础,安装运行Django,实用Django开发工具,发现、评估、使用Django应用程序,在Google App Engine上使用Django,参与Django项目。 本书适用于Python框架Django初学者,Django Web开发技术人员。
ios运行django的例子
Google App Engine is a key component of the Google Cloud Platform and one of the most comprehensive cloud services. Together with Python, the first programming language ever supported by the platform,...
这是一个使用 Google Cloud SQL/Google App Engine 的示例 Django 管理应用程序 第 1 步:创建一个 Django 应用程序 第 2 步:下载 Google App Engine 不支持 django-admin-bootstrapped v2.x 所需的 Django 1.7。...
Python Django.1.2.e-commerce.pdf
vagrant-django-template, Vagrant下运行 Django 应用的框架项目 vagrant-django-templateVagrant开发的Django 1.9项目模板。 提供的功能包括:一个 Vagrantfile,用于构建基于Ubuntu的虚拟机一个 virtualenv ( 配置...
Google App Engine makes it easy to create a web application that can serve millions of people as easily as serving hundreds, with minimal up-front investment. With Programming Google App Engine, ...
你将学习appengine的应用服务器架构、运行时环境和可扩展的数据存储,还有优化应用的相关技巧。app engine可以提供几乎无限的计算能力,《google app engine编程:英文版》给出了简明扼要的指导,以便最大化利用其...
android运行django例子
Packtpub.Django.1.2.E.commerce.May.2010.rar
Django 1.2 E-commerce(用Django开发电子商务)
Packtpub.Django.1.2.E.commerce.May.2010.pdf
NULL 博文链接:https://woods.iteye.com/blog/299722