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


如果我注释掉使用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 import djangoforms     ImportError:无法导入名称djangoforms

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


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


10739
2017-10-17 21:26


起源

您是否能够在开发沙箱中看到这些错误?我只在生产中看到它们,但我的开发沙盒工作正常,这对调试事情很烦人。 - dfrankow
我目前正在遇到这个问题,我正在寻找更多django中的补丁和更多django形式,如预览等使用www.allbuttonspressed.com或像Nick Johnson说选择一个特定的表单框​​架 - Niklas Rosencrantz


答案:


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


9
2017-10-17 23:44



感谢您确认。我正在考虑尝试修补它。我尝试使用django.forms但是在使用ModelForm和Meta工作时遇到了问题(docs.djangoproject.com/en/dev/topics/forms/modelforms)。一些例子会非常有用。这可能是一个重新工作: code.google.com/appengine/articles/djangoforms.html? - Cirrus Secure
@CirrusSecure我建议简单地避免它,并使用单独的表单和数据库框架。整合它们并不难,而且模型形式总是存在许多限制和问题。 - Nick Johnson
@NickJohnson关心提供更深入的文章或关于此的文章?我正在使用app-engine-patch,我认为它使用了djangoforms。下车涉及什么? - dfrankow
@Nick Johnson你能推荐一个表格框架吗?我要么打算更多django,选择一个表单框架和/或开发像表单预览之类的东西,因为我曾经使用Java进行这种配置并放弃它以支持python的优雅和整洁。 - Niklas Rosencrantz
@NiklasR WTForms绝对值得一看;它与Django表格非常相似,易于使用和集成。 - Nick Johnson


我最终在我的应用程序中包含了这个 http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/db/djangoforms.py 这让它发挥作用。


2
2017-10-29 03:18