在Google App Engine上运行Pure Django项目 - 示例zip - django-1.3.1

时间:2012-03-21 16:50:46

标签: python django google-app-engine django-nonrel

我发布了here,后来我才知道他已经搬到这里了。

基本上我尝试了django-nonrel示例,用django-1.3.1替换它的django,因为我编写了我的应用程序,但它给出了一些基本的错误,比如找不到django.db.utils。请注意,我已经从django创建了符号链接 - > Django-1.3.1 / django并希望它不是问题。

如果我尝试在我的应用程序中使用类似于示例应用程序的django-nonrel版本,基于回复,我会得到如下错误,就好像它找不到sqlite3后端虽然它在其选择中提到了一个选项。另外找不到utils.py。

- > - > - >

Traceback (most recent call last):
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 4143, in _HandleRequest
    self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 4049, in _Dispatch
    base_env_dict=env_dict)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 616, in Dispatch
    base_env_dict=base_env_dict)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3120, in Dispatch
    self._module_dict)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3024, in ExecuteCGI
    reset_modules = exec_script(handler_path, cgi_path, hook)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2887, in ExecuteOrImportScript
    exec module_code in script_module.__dict__
  File "I:\learn\python\event\djangoappengine\main\main.py", line 97, in <module>
    main()
  File "I:\learn\python\event\djangoappengine\main\main.py", line 56, in real_main
    run_wsgi_app(application)
  File "c:\Program Files\Google\google_appengine\google\appengine\ext\webapp\util.py", line 98, in run_wsgi_app
    run_bare_wsgi_app(add_wsgi_middleware(application))
  File "c:\Program Files\Google\google_appengine\google\appengine\ext\webapp\util.py", line 116, in run_bare_wsgi_app
    result = application(env, _start_response)
  File "I:\learn\python\event\django\core\handlers\wsgi.py", line 265, in __call__
    response = self.get_response(request)
  File "I:\learn\python\event\django\core\handlers\base.py", line 160, in get_response
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
  File "I:\learn\python\event\django\core\handlers\base.py", line 194, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)
  File "I:\learn\python\event\django\views\debug.py", line 58, in technical_500_response
    html = reporter.get_traceback_html()
  File "I:\learn\python\event\django\views\debug.py", line 109, in get_traceback_html
    frames = self.get_traceback_frames()
  File "I:\learn\python\event\django\views\debug.py", line 228, in get_traceback_frames
    pre_context_lineno, pre_context, context_line, post_context = self._get_lines_from_file(filename, lineno, 7, loader, module_name)
  File "I:\learn\python\event\django\views\debug.py", line 180, in _get_lines_from_file
    source = loader.get_source(module_name)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1538, in Decorate
    return func(self, *args, **kwargs)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2518, in get_source
    full_path, search_path, submodule = self.GetModuleInfo(fullname)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1538, in Decorate
    return func(self, *args, **kwargs)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2482, in GetModuleInfo
    submodule, search_path = self.GetParentSearchPath(fullname)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1538, in Decorate
    return func(self, *args, **kwargs)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2461, in GetParentSearchPath
    parent_package = self.GetParentPackage(fullname)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1538, in Decorate
    return func(self, *args, **kwargs)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2437, in GetParentPackage
    if self.find_module(fullname) is None:
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1538, in Decorate
    return func(self, *args, **kwargs)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2045, in find_module
    search_path)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1538, in Decorate
    return func(self, *args, **kwargs)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2375, in FindAndLoadModule
    description)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1538, in Decorate
    return func(self, *args, **kwargs)
  File "c:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2318, in LoadModuleRestricted
    description)
  File "I:\learn\python\event\django\db\__init__.py", line 77, in <module>
    connection = connections[DEFAULT_DB_ALIAS]
  File "I:\learn\python\event\django\db\utils.py", line 91, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "I:\learn\python\event\django\db\utils.py", line 49, in load_backend
    raise ImproperlyConfigured(error_msg)
ImproperlyConfigured: 'django.db.backends.sqlite3' isn't an available database backend. 
Try using django.db.backends.XXX, where XXX is one of:
    'dummy', 'mysql', 'oracle', 'postgresql', 'postgresql_psycopg2', 'sqlite3'
Error was: cannot import name utils

哪个版本的django与django-nonrel兼容,还是我必须使用django-nonrel而不是Django-1.3.1进行开发?

当我在django-nonrel上阅读更多内容时,我觉得django代码需要进行少量修改。它不是直接使用项目本身。我需要创建抽象模型超类,它不支持我在项目中使用的manytomanyfield。

我想有人确认这些限制,然后我可以关闭这个帖子。

3月28日

我从我的应用中移除了M2M。这是一个非常小的事情,只是评论出M2M领域。 现在我已经安装了python2.7.2,gae 1.6.4和djangoappengine给出了如下错误:

E:\learn\python\event>python manage.py runserver
WARNING:root:E:\software\Google\google_appengine\lib\cacerts\urlfetch_cacerts.tx
t missing; without this urlfetch will not be able to validate SSL certificates.
Traceback (most recent call last):
  File "manage.py", line 4, in <module>
    import settings # Assumed to be in the same directory.
  File "E:\learn\python\event\settings.py", line 4, in <module>
    from djangoappengine.settings_base import *
  File "E:\learn\python\event\djangoappengine\settings_base.py", line 6, in <mod
ule>
    setup_env()
  File "E:\learn\python\event\djangoappengine\boot.py", line 69, in setup_env
    setup_project()
  File "E:\learn\python\event\djangoappengine\boot.py", line 123, in setup_proje
ct
    from .utils import have_appserver, on_production_server
  File "E:\learn\python\event\djangoappengine\utils.py", line 14, in <module>
    default_partition='dev')[0]
TypeError: LoadAppConfig() got an unexpected keyword argument 'default_partition
'

此致

米滕。

2 个答案:

答案 0 :(得分:2)

你不能只在nonrel中替换Django的版本。它实际上是Django的一个分支,有许多自定义。

答案 1 :(得分:0)

Django-1.3.1 / Django的数据库模型无法在Google App Engine上运行。

Django-nonrel实现后端,以便Django模型可以在Google App Engine上运行。

因此,如果您想使用Django模型,则必须使用Django-nonrel。否则,您可以将Django用于模板/表单,但您需要使用Google App Engine的db.Model或基于ndb.Model的模型。