2012-06-24 15 views
5

Ho passato attraverso il ottenendo tut avviato per python27 e App Engine: https://developers.google.com/appengine/docs/python/gettingstartedpython27/come organizzare i file con python27 app quadro motore webapp2

Entro la fine del tut, tutte le classi sono nello stesso file (helloworld.py) e si e si configura il router per puntare un percorso URL a una classe alla fine del file:

app = webapp2.WSGIApplication([('/', MainPage), 
          ('/sign', Guestbook)], 
          debug=True) 

Quello che il tut non ha coperto è come faccio orginise mie lezioni/files come il mio l'app cresce. Ad esempio, inserirò MainPage in un file separato e poi chiamerò "import MainPage" nel file helloworld.py e aggiungerò il percorso all'applicazione WSGIA? C'è qualcosa di più automatico di questo? Come dovrei chiamare il file MainPage e dove dovrei memorizzarlo?

risposta

7

È preferibile importare tutti i gestori presso l'app-startup per sfruttare il numero webapp2's lazy handler loading che carica moduli/pacchetti in base alle esigenze.
modo da avere un paio di opzioni:

Opzione 1, gestori in un modulo
Luogo MainPage in un altro file (modulo) allo stesso livello del helloworld.py di file:

 
/my_gae_app 
    app.yaml 
    helloworld.py 
    handlers.py 

E nel vostro percorso (in helloworld.py) si dovrebbe fare:

app = webapp2.WSGIApplication([('/', 'handlers.MainPage'), 
           ('/sign', 'handlers.Guestbook')], 
           debug=True) 

Opzione 2, gestori in un pacchetto; forse considerare come la vostra applicazione diventa più grande
Come la vostra applicazione diventa più grande si potrebbe desiderare di creare un pacchetto in cui collocare i gestori:

 
/my_gae_app 
    /handlers 
     __init__.py 
     guestbook.py 
     main.py 
    app.yaml 
    helloworld.py 

percorsi (in helloworld.py):

app = webapp2.WSGIApplication([('/', 'handlers.main.MainPage'), 
           ('/sign', 'handlers.guestbook.Guestbook')], 
           debug=True) 
Problemi correlati