如何使用 use_library('django','1.2')

Posted

技术标签:

【中文标题】如何使用 use_library(\'django\',\'1.2\')【英文标题】:How to use use_library('django','1.2')如何使用 use_library('django','1.2') 【发布时间】:2011-09-26 01:35:51 【问题描述】:

我正在学习使用 Google App Engine 进行开发。

这是教程中的代码之一,http://code.google.com/appengine/docs/python/gettingstarted/usingwebapp.html

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('Hello, webapp World!')

application = webapp.WSGIApplication(
                                     [('/', MainPage)],
                                     debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

我的代码几乎相同。我有时会收到警告:

WARNING 2011-06-30 13:10:44,443 init.py:851] 您正在使用默认的 Django 版本 (0.96)。默认 Django 版本将在不久的将来在 App Engine 版本中更改。请调用 use_library() 显式选择 Django 版本。欲了解更多信息,请参阅http://code.google.com/appengine/docs/python/tools/libraries.html#Django

任何人都可以使用 use_library() 重构上述代码吗?我不确定如何开始以及在哪里使用 use_library 以及如何使用 webapp。

提前致谢。

【问题讨论】:

【参考方案1】:

尝试将此代码放在您的模块顶部:

import os
from google.appengine.dist import use_library
use_library('django', '1.2')

【讨论】:

@Amol 将这些行添加到您在导入 webapp 之前粘贴的文件的顶部,这样您就可以跳过 appengine_config.py。 appengine_config 方法更可取(而且它是单行的)。 use_library() 方法的问题发生在请求到达您的应用程序的新实例并被一些您无法直接控制的代码处理的罕见时刻。如果没有在appengine_config.py 中指定 django 版本,如果该代码导入 webapp,该应用程序的实例将被锁定在 0.96。 @Dave 我认为这发生在我的应用程序(id 分类市场)今天某个时候出现 unaccetableversionerrors,然后将库导入所有模块,现在终于升级以使用文件 `appengine_config.py' 但是 Python 2.7 版本的 GAE 不支持许多可配置项(包括 django 版本行)。尝试将您的 app.yaml 更改为“runtime: python27”,并且 appengine_config.py 中的 1-liner 将无法读取。有关详细信息,请参阅code.google.com/appengine/docs/python/tools/…(尤其是“webapp(适用于高级用户。Python 2.7 中不可用)”这一行)【参考方案2】:

上述代码不应要求您直接调用 use_library。

如果您在应用程序的根目录中创建一个名为 appengine_config.py 的新文件,并在其中添加以下行:

# Make webapp.template use django 1.2
webapp_django_version = '1.2'

【讨论】:

我就是这样做的。对于好奇的人,这会导致use_library 在幕后发生。【参考方案3】:

在当前版本中,这更加简单,因为现在在 app.yaml 中指定了第三方库

libraries:
- name: django
  version: "1.2"

您还可以使用包含 Django 模板引擎的 webapp2。

import webapp2
from google.appengine.ext.webapp2 import template

【讨论】:

以上是关于如何使用 use_library('django','1.2')的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 之外使用 Django 模型?

如何使用django session

Django:当我使用 django 表单时,如何实现这个 html 表单

django-1-新手如何使用django

如何仅使用 django 作为后端并使用 django-rest-framework 发布

如何使用WSGI部署Django