如果我注释掉使用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
...

这是我的日志中的追溯记录:
追溯(最近一次通话):
文件“/base/data/home/apps/s~cirrussecure1/5.354034990641807540/main.py”,
第23行,在
从google.appengine.ext.db导入djangoforms
ImportError:无法导入名称djangoforms

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

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

我尝试了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,请更新您的文档,文章,示例等,以免其他人像我一样浪费一天。

最佳答案

Python 2.7不提供google.appengine.ext.db.djangoforms模块。您可以自己修补副本,但是更好的主意是修改表单处理代码以使其不依赖它-它不受支持并且坦率地说有点hack。

关于python - Google App Engine,Python 2.7运行时,ImportError : cannot import name djangoforms,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7799764/

10-12 21:55