正在加载...

app-engine-patch是目前在GAE上支持django框架的最好的粘合剂

作者:混沌 十二月 4th, 2009

副标题:  准备将本博用django重构之简要备查信息

前提:  已经安装了Python 和 AppEngine SDK

1) 下载:  app-engine-patch  .  其实这就已经是可以运行的范例,可以作为项目的开始.
2) 本地运行演示

manage.py runserver

3)  根据运行警告:

WARNING  2009-12-03 14:51:09,358 dev_appserver.py:3370] Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named _imaging

   先安装 Python "PIL" module  这可以参考: 安装 PIL 

4)  至于manage.py 的常用命令 可以通过

查看命令列表  manage.py help
查看命令详解: manage.py help cmdname

5)创建一个应用程序,比如:guestbook

manage.py startapp guestbook

   然后将请将应用程序名称加入 /settings.py 文件的 INSTALLED_APPS 列表中,比如:

INSTALLED_APPS = (
    ...
    'guestbook',
)

6)如果使用的是带关系数据库的 Django,则现在必须运行 manage.py syncdb 以创建必需的数据库表格。对于 App Engine,这一切都是实时进行的。

7)将应用程序加入全局网址路由。更改项目的全局 /urls.py 文件,比如:

urlpatterns = patterns('',
    ...
    (r'^guestbook/', include('guestbook.urls')),
)

    那么:; 如果您访问任意以 /guestbook/ 开头的网址,系统都将在应用程序特定的网址配置文件 /guestbook/urls.py 中查找以传送请求。

8) 现在可以开始你自己的开发了.

----------------------------------------------------

相关资源列表:

The Django Book
app-engine-patch Documentation

----------------------------------------------------

下面是零碎的备查信息:

1)  如何在Django Model中进行自定义表名?

      答:  在对应表Model添加一个子类定义即可,如:

class Meta:
    db_table = "Greeting"

2) 如何扩展Django User Model

      答:  这是可以的,

这里有一个篇相关的文章:   非profile方式扩展Django User Model  可供参考. 
为了防止某种原因原文消失,特意转载在
 
但是貌似该文中提及的 所谓完美方案,无法实现,总是报:  "AttributeError: type object 'User' has no attribute 'add_to_class'"
错误.
算了,还是采用官方提供的扩展方案吧!  无奈何
Django官方指导的方式  和  Django tips: extending the User model

     注意:  由于app-engine-patch中整合的Django和原生的Django有所不同,所以前面提及方法不适用了.具体请看 文档:  Defining custom user models
简述如下:
yourapp/models.py 中的代码:

#from django.contrib.auth.models import User 
from ragendja.auth.hybrid_models  import User as OldUser
class User(OldUser):
    class Meta:
        db_table = "User"
    newfield=db.StringProperty(default='blog.chaoskey.com')

  注:  红颜色的类名 ,必须是 User,其他的名字会报错.   所以蓝颜色部分必须重命名
yourapp/settings.py 中的必须修改:

#AUTH_USER_MODULE = 'ragendja.auth.hybrid_models'
AUTH_USER_MODULE = 'yourapp.models'

  具体使用时依然还是可以导入:

from django.contrib.auth.models import User

    但是调用处用到User ,表面是django.contrib.auth.models的User,但实际上已经是  yourapp.models.User 了.

3)

相关阅读:

我要留言

麻烦,计算一下:3+5