2011-10-17 11 views
11

Jeśli skomentuję obsługę, która używa djangoformów, wszystko inne wydaje się działać.Google App Engine, środowisko wykonawcze Python 2.7, ImportError: nie można zaimportować nazwy djangoforms

Poniżej jest moja zmodyfikowana 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 

Poniżej znajduje się wyciąg z main.py że modyfikacja:

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

Oto ślad powrotem z moim dzienniku: Traceback (ostatnie ostatnie połączenie): Plik "/base/data/home/apps/s~cirrussecure1/5.354034990641807540/main.py", wiersz 23, w od google.appengine.ext.db import djangoforms ImportError: nie można zaimportować nazwy djangoforms

Coś, co robię, nie pozwala importować djangoform, ale nie wpływa na nic innego. Przeszukałem go, ale nikt nie ma problemu (jeszcze?). Dzięki.


@all Znaleziono rozwiązanie, które trzyma mnie na gae/Python 2.7, ale nie go lub sposób google obchodzić tę część wydaniu podoba.

Próbowałem wtforms i poczyniły pewne postępy próbując uzyskać go z gae/python 2.5 przed wywołaniem wystarczy.

Następnie dostałem djangoforms.py (od http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/db/djangoforms.py), wrzuciłem to z moimi plikami i dostałem to do pracy z gae/python 2.7.

Użyłem pliku app.yaml pokazanego powyżej. Musiał również zmienić {{form_section}} na {{form_section | safe}} w dwóch plikach szablonów.

Domyślam się, że Django popada w niełaskę z zespołem gae. Rozumiem, że djangoformy były przestarzałe przez rok, a potem spadły. Jednak upuszczenie go bez ostrzeżenia, a nawet jakiekolwiek wzmianki w dokumencie, porównujące bieżące wydanie z poprzednim, nie jest miłym zadaniem dla klientów.

@google Zaktualizuj swoje, dokumenty, artykuły, przykłady itd., Aby inni nie musieli marnować dnia tak jak ja.

+3

Czy widzisz te błędy w swojej piaskownicy? Widzę je tylko w produkcji, ale moja devbox działa dobrze, co jest denerwujące przy debugowaniu. – dfrankow

+0

Obecnie pracuję nad tym problemem i patrzę na poprawkę w więcej django i więcej formach Django, takich jak podgląd itp., Używając www.allbuttonspressed.com lub jak Nick Johnson mówi, wybierz konkretny framework formularza –

Odpowiedz

9

Moduł google.appengine.ext.db.djangoforms nie jest dostarczany z Pythonem 2.7. Można samemu załączyć kopię, ale lepszym pomysłem byłoby zmodyfikowanie kodu obsługi formularza, aby się na nim nie opierać - jest to nieobsługiwane i szczerze mówiąc trochę hackowania.

+1

Dzięki za potwierdzenie, że .Miałem zamiar go ponownie załączyć. Próbowałem użyć django.forms, ale miałem problemy z działaniem funkcji ModelForm i Meta (https://docs.djangoproject.com/en/dev/topics/forms/modelforms/) . Niektóre przykłady byłyby bardzo pomocne. Może to być ponowne: http://code.google.com/appengine/articles/djangoforms.html? –

+1

@CirrusSecure Proponuję po prostu go unikać i używać osobnych formularzy i frameworków DB.Integracja z nimi nie jest trudna, a modelformy zawsze miały wiele ograniczeń i problemów. –

+1

@NickJohnson Dbać o bardziej szczegółowy artykuł lub pisać o tym? Jestem na patchu aplikacji i myślę, że używa djangoformów. Co wiąże się z wysiadanie? – dfrankow

Powiązane problemy