【问题标题】:Do we still need django-nonrel now that GAE (allegedly) supports Django out of the box?既然GAE(据称)支持开箱即用的Django,我们还需要django-nonrel吗?
【发布时间】:2012-01-30 14:28:36
【问题描述】:

根据这个问题:

Django on Google App Engine

开始使用 GAE/Django 的最简单方法是使用 Django 非 rel 包。然而,既然最新的 Python/GAE SDK 包含了 Django 的构建,我们还需要这个吗?

现在在 GAE 上开始使用 Django 的最佳实践是什么?

谢谢

【问题讨论】:

    标签: django google-app-engine


    【解决方案1】:

    更新:似乎Web app2 是新项目最简单的选择。

    这个guest article 建议

    "App Engine 确实提供了一些 Django 支持,但这主要是 只有模板和视图。”

    non-rel 似乎仍然是您最好的选择。尽管我会提醒您,根据their blog,可能不会进行进一步的开发和/或维护。

    【讨论】:

    • 我还没有看到有人强烈支持这个产品 - 我想知道 Django 是否可能不是 GAE 应用程序的最佳选择。
    • 我同意。截至 2010 年 11 月,App Engine 团队 recommended 用于现有 Django 应用程序。此后情况发生了变化。
    • 我知道 SO 对“哪个最好”类型的问题不屑一顾,但是您愿意为 GAE 应用程序提名您的首选应用程序框架吗? (当然是在 Python 中)。
    • Some choices you might be aware of 是新应用还是现有应用?
    • 它是新的。我曾经做过一些 Django 工作,发现在 GAE 之外很容易。从 GAE 的角度来看,这似乎很麻烦,而且大多是多余的。
    【解决方案2】:

    普通 Django 模型没有支持 GAE 数据存储的后端。因此,您不能使用 Django 模型,因此也不能使用 Django 的模型形式。您必须使用从 GAE 的 python db.Model() 派生的模型。您可以使用 google.appengine.ext.db.djangoforms,而不是为表单使用 Django 的 ModelForm 类。请注意,这是专门针对 ModelForms 的,其他表单也可以正常工作,因为它们不绑定到数据库。

    我可以想到两个使用 Django-nonrel 的好理由: 1a)您在 Django 上有一个现有项目。使用 Django-nonrel 将是最懒惰的方式。将模型重写为 GAE 的模型并不太难,但这可能是一个小麻烦,尤其是如果 1b)您使用了很多现有的 Django 组件,并且您必须通过所有这些组件来更新模型和表单。 2) 你想对冲你对 GAE 的赌注。使用 Django-nonrel 可以让您轻松切换到 MongoDB,因为 Django-nonrel 有一个正常工作的 MongoDB 后端。当前的 Django-nonrel 维护者似乎对 MongoDB 更感兴趣。

    使用过 Django-nonrel,到目前为止,我遇到了一些可能是一个错误选择的原因: 1) 不支持祖先查询。不过,对此有一个出色的拉取请求。不过,它不会与任何其他数据库后端兼容。 2) ndb 即将问世,似乎它还有更多好处,可能不会在 Django-nonrel 上看到支持。

    如果您确实使用 GAE 的原生 db API,那么 Django 的主要好处将是表单验证。否则,webapp2+jinja2+gae db.Models() 将提供与 Django 类似的功能。

    【讨论】:

    • 我发现这个答案比选择的答案更正确。它代表了我在 appengine 上尝试(然后放弃)django 的经验。如果不喝appengine koolaid,就很难从appengine 中获得任何好处。仅仅试图将其抽象出来是行不通的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多