Подтвердить что ты не робот

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
...

Здесь трассировка из моего журнала:   Traceback (последний последний вызов):   Файл "/base/data/home/apps/s~cirrussecure1/5.354034990641807540/main.py",   строка 23, в   from google.appengine.ext.db импортировать djangoforms   ImportError: невозможно импортировать имя djangoforms

Что-то, что я делаю, не позволит мне импортировать djangoforms, но не влияет ни на что другое. Я Googled это, но никто другой, похоже, не проблема (пока?). Спасибо.


@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 Пожалуйста, обновите свои статьи, статьи, примеры и т.д., чтобы другим не пришлось терять день, как я.

4b9b3361

Ответ 1

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