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

Cir*_*ure 11 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
Run Code Online (Sandbox Code Playgroud)

以下是我修改过的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
...
Run Code Online (Sandbox Code Playgroud)

这是从我的日志回溯: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请更新您的文档,文章,示例等,以便其他人不必像我一样浪费一天.

Nic*_*son 9

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

  • @NiklasR WTForms绝对值得一看; 它与Django表格非常相似,易于使用和集成. (3认同)