`
marlonyao
  • 浏览: 253213 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在App Engine下运行Django 1.2

阅读更多
我不知道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文档

    文档中包含的 `django1.2.chm` 和 `djangobook2ch.chm` 文件分别提供了 Django 1.2 的中文版和英文版官方文档,对于学习和查阅 Django 1.2 的相关知识非常有帮助。CHM 文件是一种帮助文件格式,包含了索引、搜索和...

    Django 1.2 E-commerce

    《Django 1.2 电子商务》不仅是一本介绍Django在电子商务领域应用的书籍,更是一部指导开发者如何利用这一强大框架构建高效、安全的电子商务网站的手册。无论你是初学者还是有经验的开发者,都可以通过阅读本书来...

    Django 1.2

    在 Django 1.2 中引入的重要新特性主要包括: Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的软件设计模式,即模型M,模版T和视图控制器V。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以...

    django_appengine:在App Engine上运行最新的Django

    在Google App Engine上运行最新的Django版本这是我博客 的补充代码首先是创建我们的项目目录: mkdir -pv django_appengine/libcd django_appengine通过pip将最新的Django安装到我们的本地目录中: pip install ...

    分享:集成了Django1.0 的Google App Engine开发 模板项目

    3. **Django与App Engine集成**:这涉及到将Django项目配置为在App Engine上运行,可能需要修改WSGI服务器、设置环境变量、处理静态文件和媒体文件的存储,以及解决两者之间的兼容性问题。 4. **App Engine SDK**:...

    google_appengine_1.9.50.zip

    这个"google_appengine_1.9.50.zip"压缩包包含了 Google App Engine 的 Python SDK,版本为1.9.50。 **Google App Engine 的主要特点:** 1. **自动缩放**:根据应用程序的需求,Google App Engine 可以自动调整...

    Django.1.2.e-commerce.pdf

    ### Django 1.2 e-commerce: 构建强大的电子商务应用 #### 一、概述 《Django 1.2 e-commerce》是一本专注于利用Django框架构建电子商务应用程序的专业书籍。本书由Packt Publishing出版,作者为Jesse Legg,版权...

    ios运行django的例子

    在iOS平台上运行Django应用程序可能看起来有些不寻常,因为Django主要是为服务器端开发设计的,而iOS则是移动应用的平台。然而,这种结合可能是为了在iOS设备上进行本地数据处理,或者创建一个离线版的Django应用。...

    Packtpub.Django.1.2.E.commerce.May.2010.rar

    在本书中,作者详细讲解了如何利用Django 1.2版本来设计和实现电子商务系统。虽然现在Django已经发展到更高的版本,但学习早期版本的实践经验仍然有助于理解框架的基本原理和核心概念,这些知识对于升级到新版本或...

    django-guardian:Django 1.2+ 实现了单个对象权限-python

    django-guardian:Django 1.2+ 实现了单个对象权限 django-guardian django-guardian 是每个对象权限 [1] 作为授权后端的实现,自 Django 1.5 起支持。 它不适用于较旧的 Django 版本。 文档 在线文档可在 ...

    django1.2.3离线文档 html

    它是在视图之前和之后运行的代码,可用于日志记录、身份验证、缓存等。 7. **管理后台(Admin)**:Django 的 admin 面板是一个自动生成的界面,用于管理模型实例。只需简单的注册,开发者就能拥有一个功能丰富的...

    基于django的工作流引擎,工单(a workflow engine base on django python).zip

    4. **部署教程**:指导如何在Window10/11环境下安装和部署该项目的步骤。 总之,基于Django的工作流引擎工单系统提供了一个实用的业务流程管理工具,通过学习和实践,无论是对Python编程还是Web开发的理解,都将有...

    google_appengine_1.9.38

    标题 "google_appengine_1.9.38" 指的是 Google App Engine 的一个特定版本,1.9.38,这个版本可能包含了该时期 App Engine 的稳定特性和更新。 描述中提到的 "WebRTC 房间服务器" 是指使用 WebRTC(Web Real-Time ...

    Programming Google App Engine with Python

    - **WSGI运行时环境**:WSGI(Web Server Gateway Interface)是Python Web应用和Web服务器之间的一个接口标准,App Engine提供了基于WSGI的运行时环境。 #### 四、流行的Web框架 开发者可以选择多个流行的Web框架...

    android运行django例子

    在Android设备上测试Django应用时,可以使用Android Studio的模拟器或实际设备,配合日志输出和调试工具,确保应用在不同环境下运行正常。 9. **持续集成与部署** 对于大型项目,可以采用持续集成(CI)和持续部署...

    Python for Google App Engine(PACKT,2015)

    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 AppEngine 入门

    AppEngine在2008年首次发布预览版,提供了一套配额系统,确保在预览期内免费使用,但超出部分需付费,具体价格当时未公布。 **技术栈与开发环境** AppEngine的主要技术栈基于Python,尽管谷歌表示未来会支持更多...

    django-admin-bootstrap-gae:用于 Google App Engine 的 Django Admin Bootstrap 应用程序

    这是一个使用 Google Cloud SQL/Google App Engine 的示例 Django 管理应用程序 第 1 步:创建一个 Django 应用程序 第 2 步:下载 Google App Engine 不支持 django-admin-bootstrapped v2.x 所需的 Django 1.7。...

Global site tag (gtag.js) - Google Analytics