Google App Engine, среда исполнения Python 2.7, ошибка ImportError: невозможно импортировать имя djangoforms - PullRequest
11 голосов
/ 18 октября 2011

Если я закомментирую обработчики, которые используют 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 импортировать 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}} в двух файлах шаблонов.

Полагаю, Джанго теряет популярность в команде геев. Я мог понять, если djangoforms устарели в течение года, а затем упал. Однако отбрасывать его без каких-либо предупреждений или даже упоминаний в документе, сравнивая текущий выпуск с предыдущим, просто нехорошо для ваших клиентов.

@ google Пожалуйста, обновите свои документы, статьи, примеры и т. Д., Чтобы другие не тратили впустую день, как я.

Ответы [ 2 ]

9 голосов
/ 18 октября 2011

Модуль google.appengine.ext.db.djangoforms не поставляется с Python 2.7.Вы можете внести исправление в копию самостоятельно, но лучшей идеей было бы изменить код обработки формы, чтобы не полагаться на него - он не поддерживается и, откровенно говоря, немного взломан.

2 голосов
/ 29 октября 2012

В итоге я включил это в свое приложение http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/db/djangoforms.py, и это заставило его работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...