2011-10-17 9 views
11

Se commento i gestori che utilizzano djangoforms, tutto il resto sembra funzionare.Google App Engine, runtime Python 2.7, ImportError: impossibile importare il nome djangoforms

Di seguito è riportato il mio app.yaml modificata:

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 

Il seguente è un estratto dal main.py che ho modificato:

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

Ecco la traccia indietro dal mio registro: Traceback (chiamata più recente scorso): file "/base/data/home/apps/s~cirrussecure1/5.354034990641807540/main.py", linea 23, in da djangoforms google.appengine.ext.db importazione ImportError: non si può importare nome djangoforms

Qualcosa che sto facendo non mi permette di djangoforms importazione ma non influenza qualsiasi altra cosa. Ho cercato su Google ma nessun altro sembra avere un problema (ancora?). Grazie.


@all trovato una soluzione che mi fa andare avanti sulla gae/python 2.7, ma non mi piace o il modo in cui Google ha gestito questa parte del rilascio.

Ho provato wtforms e ho fatto qualche progresso cercando di farlo funzionare con gae/python 2.5 prima di chiamare abbastanza.

Ho quindi ottenuto djangoforms.py (da http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/ext/db/djangoforms.py), l'ho inserito con i miei file e ho funzionato con gae/python 2.7.

Ho usato l'app.yaml mostrato sopra. Doveva anche cambiare {{form_section}} in {{form_section | safe}} in due file modello.

Immagino che Django stia perdendo il favore con la squadra di gae. Potrei capire se djangoforms è stato deprecato per un anno e poi lasciato cadere. Tuttavia, eliminarlo senza alcun preavviso o menzione nel documento, confrontando la versione corrente con quella precedente non è una cosa carina da fare ai tuoi clienti.

@google Aggiorna i tuoi documenti, articoli, esempi, ecc. In modo che altri non debbano sprecare un giorno come ho fatto io.

+3

Sei riuscito a vedere questi errori nella tua sandbox dev? Li vedo solo in produzione, ma la mia sandbox dev funziona perfettamente, il che è fastidioso per il debug delle cose. – dfrankow

+0

Attualmente sto correndo anche in questo problema e sto osservando entrambe le patch in più django e altre forme django come l'anteprima ecc. Usando www.allbuttonspressed.com o come Nick Johnson dice scegliere un framework specifico per il modulo –

risposta

9

Il modulo google.appengine.ext.db.djangoforms non è fornito con Python 2.7. Potresti crearne una copia tu stesso, ma un'idea migliore sarebbe quella di modificare il codice di manipolazione dei moduli per non fare affidamento su di esso - non è supportato e francamente un po 'un trucco.

+1

Grazie per aver confermato che Stavo pensando di provare a ricollegarlo. Ho provato a usare django.forms ma stavo riscontrando problemi nel far funzionare ModelForm e Meta (https://docs.djangoproject.com/en/dev/topics/forms/modelforms/) . Alcuni esempi sarebbero molto utili. Una rielaborazione di questo forse: http://code.google.com/appengine/articles/djangoforms.html? –

+1

@CirrusSecure Suggerisco semplicemente di evitarlo e di utilizzare moduli separati e framework DB.Integrarli non è difficile, e le modelform hanno sempre avuto una serie di restrizioni e problemi. –

+1

@NickJohnson Cura di fornire un articolo più approfondito o scrivere su questo? Sono su app-engine-patch e penso che usi djangoforms. Cosa è coinvolto nello scendere? – dfrankow

Problemi correlati