Google App Engine,Python 2.7运行时,ImportError:无法导入名称djangoforms

时间:2011-10-17 21:26:08

标签: python google-app-engine

如果我注释掉使用djangoforms的处理程序,其他一切似乎都有效。

以下是我修改过的app.yaml:

application: xxxxxxx
version: 5
#` -1+1
# runtime: python
runtime: python27
api_version: 1

inbound_services:
- mail

#` +3
libraries:
- name: django
  version: "1.2"

handlers:
- url: /(.*\.(html|css|js|gif|jpg|png|ico))
  static_files: static/\1
  upload: static/.*
  expiration: "1d"
  # expiration: "1m"

- url: .*
  script: main.py

- url: /_ah/mail/.+
  script: lib/handler_mail.py
  login: admin

以下是我修改过的main.py的摘录:

import os
# dummy, enables django template filters to be registered
os.environ[u'DJANGO_SETTINGS_MODULE'] = u'conf'
#` -2
# from google.appengine.dist import use_library
# use_library('django', '1.2')

from functools import wraps
from appengine_utilities.cache import Cache
from google.appengine.api import taskqueue
from google.appengine.ext.db import djangoforms
...

这是我日志中的追溯:     Traceback(最近一次调用最后一次):     档案“/base/data/home/apps/s~cirrussecure1/5.354034990641807540/main.py”,     第23行,在     来自google.appengine.ext.db import djangoforms     ImportError:无法导入名称djangoforms

我正在做的事情不会让我导入djangoforms但不会影响其他任何事情。我用Google搜索了,但似乎没有其他人出现问题(但是?)。感谢。


@all找到了一个让我继续使用gae / python 2.7的解决方案,但我不喜欢它,或谷歌处理这部分版本的方式。

我尝试了wtforms并且在调用足够之前尝试使用gae / python 2.5取得了一些进展。

然后我得到了djangoforms.py(来自http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/db/djangoforms.py),将其放入我的文件中,然后使用gae / python 2.7。

我使用了上面显示的app.yaml。也不得不改变     {{form_section}}至{{form_section | safe}} 在两个模板文件中。

我猜Django正在失去对gae团队的青睐。我能理解djangoforms是否被弃用了一年然后掉了下来。但是,在没有任何警告的情况下删除它,甚至在文档中提及任何提及。将当前版本与之前的版本进行比较对您的客户来说并不是一件好事。

@google请更新您的文档,文章,示例等,以便其他人不必像我一样浪费一天。

2 个答案:

答案 0 :(得分:9)

Python 2.7不提供google.appengine.ext.db.djangoforms模块。你可以自己修补一个副本,但更好的想法是修改你的表单处理代码而不是依赖它 - 它不受支持,坦率地说是一个黑客。

答案 1 :(得分:2)

我最终将这个包含在我的应用http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/db/djangoforms.py中,并使其发挥作用。