2010-11-09 11 views
9

Ho sviluppato in Pylon per un po' di tempo e recentemente ho imparato che si stanno fondendo con un altro framework per creare Pyramid.La nuova struttura di file/directory di Pyramid (Pylons) mi sta causando un po 'di confusione

Ho cercato su example code per vedere le differenze e sta causando un po 'di confusione ...

Ad esempio, controllori sono stati sostituiti da Vista. Non è un grosso problema ... Ma quello che trovo interessante è che non ci sono directory per questi. È semplicemente un file: views.py.

Come funziona questa nuova struttura MVC? Scrivo tutte le mie azioni in questo unico file? Ciò potrebbe diventare piuttosto fastidioso quando ho azioni con nomi simili (ad esempio più indici):/

Potrebbe indicarmi la direzione di alcuni buoni tutorial/documentazione su come utilizzare questo framework?

risposta

26

Poiché i vari metodi di configurazione correlati alla vista (config.add_view, config.add_handler) richiedono il passaggio di un nome punteggiato come classe o funzione da utilizzare come vista o gestore, è possibile disporre il proprio codice come desiderato .

Ad esempio, se il progetto nome del pacchetto erano myproject e voleva organizzare tutti i vostri punti di vista in un sottopacchetto Python all'interno del pacchetto myproject denominato "viste" (vedi http://docs.python.org/tutorial/modules.html#packages) al posto di un singolo vista file di, si potrebbe:

  • Creare una directory views all'interno del pacchetto mypackage.

  • Spostare esistente views.py file in un file all'interno del nuovo views directory chiamata, per esempio, blog.py.

  • Creare un file all'interno del nuovo views directory denominata __init__.py (può essere vuoto, questo solo dice a Python che la directory views è un pacchetto.

quindi modificare il __init__.py del vostro myproject progetto (non il __init__.py appena creato nella directory views, quello nella sua directory padre) da qualcosa come:

config.add_handler('myhandler', '/my/handler', handler='mypackage.views.MyHandler')

A:

config.add_handler('myhandler', '/my/handler', handler='mypackage.views.blog.MyHandler')

Si può quindi continuare ad aggiungere i file alla directory views, e si riferiscono alla vista o classi handler/funzioni all'interno di questi file tramite il nome puntato passato come handler= o view=.

+0

avevo considerato creare il mio struttura di directory, ma non era sicuro di come farlo. L'attributo 'handler' sembra renderlo abbastanza facile. Saluti. – dave

+0

n.b. è altrettanto facile passare da un file 'views.py' a una directory' views/'anche se non si sta usando' add_handler'. Pyramid ti inizia appena con un file perché una directory è eccessiva per un piccolo progetto. – joeforker

+0

Posso aggiungere il gestore nella funzione config.scan? – CrazyGeek

5

Ecco una risposta che dovrebbe essere abbastanza semplice. Questa domanda è stata posta quando Pyramid 1.3 non era ancora in circolazione. Quindi dimentica i gestori di Python dato che il nuovo decoratore fa un buon lavoro ora.

Ma tanto per cominciare: Piramide non ha alcuna struttura comune. Potresti scrivere un'intera app in un singolo file, se lo desideri. In altre parole, se ti piacesse come erano strutturati i piloni, puoi farcela. Se preferisci impostare la tua struttura, fallo.

Se il vostro sito non ha bisogno di più di un file, allora ... GO FOR IT !!! Tutto ciò di cui hai veramente bisogno è che funzioni.

personalmente ho una struttura come quella

- root 
    - __init__.py # all setup goes there 
    - security.py # where functions related to ACL and group_finder 
    - models.py or models/ # where all my models go 
    - views.py or views/ # where all my views go 
    - templates 
     - modelname 
      - all template related to this resource type 

    - scripts # where I put my scripts like backup etc 
    - lib # all utilities goes there 
    - subscribers # where all events are defined 

Il mio pacchetto di vista potrebbe a volte essere diviso in più file dove avevo viste di gruppo da ResourceType.

Se vi capita di usare contesto per abbinare vista invece di itinerari. Puoi fare alcune cose carine con view_defaults e view_config.

view_defaults imposta alcuni valori predefiniti per la classe e view_config imposta ulteriori configurazioni per i difetti utilizzando i valori predefiniti forniti da view_defaults se presenti.

Problemi correlati