2010-11-09 7 views
9

He estado desarrollando en Pylons desde hace un tiempo y he aprendido recientemente que se están fusionando con otro framework para crear Pyramid.La nueva estructura de archivo/directorio de Pyramid (Pylons) me está causando cierta confusión

He estado buscando durante example code para ver las diferencias y está causando un poco de confusión ...

Por ejemplo, los controladores han sido sustituidos por las vistas. No es un gran problema ... Pero lo que me parece interesante es que no hay directorios para estos. Es simplemente un archivo: views.py.

¿Cómo funciona esta nueva estructura MVC? ¿Escribo todas mis acciones en este único archivo? Eso podría ser bastante molesto cuando tengo acciones con nombres similares (índices múltiples, por ejemplo):/

¿Podría indicarme algunos buenos tutoriales/documentación sobre cómo usar este marco?

Respuesta

26

Dado que los diversos métodos de configuración relacionados con la vista (config.add_view, config.add_handler) requieren que pase un nombre punteado como la clase o función que se utilizará como vista o controlador, puede organizar su código como prefiera .

Por ejemplo, si el nombre del paquete de proyectos eran myproject y quería organizar todos sus puntos de vista en un sub-paquete Python dentro del paquete myproject llamado "vistas" (ver http://docs.python.org/tutorial/modules.html#packages) en lugar de un solo vistas archivo, es posible que:

  • Cree un directorio views dentro de su paquete mypackage.

  • Mover el views.py archivo existente a un archivo dentro del nuevo directorio llamado views, por ejemplo, blog.py.

  • Crear un archivo dentro de la nueva views directorio llamado __init__.py (que puede estar vacío, esto sólo le dice a Python que el directorio views es un paquete.

continuación, cambiar el __init__.py de su myproject proyecto (no__init__.py que acaba de crear en el directorio views, el que está en su directorio principal) de algo así como:

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

Para:

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

A continuación, puede seguir añadiendo archivos al directorio views, y se refieren a puntos de vista o las clases de controlador/funciones dentro de esos archivos a través del nombre de puntos pasa como handler= o view=.

+0

Consideré crear mi propia estructura de directorios pero no estaba seguro de cómo hacerlo. El atributo 'handler' parece hacer eso bastante fácil. Aclamaciones. – dave

+0

n.b. es igualmente fácil pasar de un archivo 'views.py' a un directorio' views/'ya sea que esté usando' add_handler'. Pyramid solo comienza con un archivo porque un directorio es excesivo para un proyecto pequeño. – joeforker

+0

¿Puedo agregar controlador en la función config.scan? – CrazyGeek

5

Aquí hay una respuesta que debería ser bastante directa. Esta pregunta fue hecha cuando Pyramid 1.3 aún no estaba fuera. Así que olvídate de los manejadores de python ya que el nuevo decorador hace un buen trabajo ahora.

Pero solo para comenzar: Pyramid no tiene ninguna estructura común. Podrías escribir toda una aplicación en un solo archivo si quisieras. En otras palabras, si le gustó cómo se estructuraron las torres, puede hacerlo. Si prefieres configurar tu propia estructura, entonces hazlo.

Si su sitio no necesita más de un archivo, entonces ... ¡VAYA PARA ELLO! Todo lo que realmente necesitas es que funcione.

yo personalmente tienen una estructura como la que

- 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 

Mi paquete de vista puede ser dividido a veces hasta en muchos archivos donde había puntos de vista del grupo de TipoRecurso.

Si usa el contexto para unir vistas en lugar de rutas. Puede hacer algunas cosas muy lindas con view_defaults y view_config.

view_defaults establece algunos valores predeterminados para la clase, y view_config establece algunas configuraciones más para las definiciones usando los valores predeterminados proporcionados por view_defaults, si están presentes.

Cuestiones relacionadas