2008-12-12 14 views
8

Bastante nuevo en esta escena e intentando encontrar documentación para adoptar las mejores prácticas. Estamos construyendo un sitio de contenido bastante grande que constará de varios catálogos de medios y estoy tratando de encontrar algunos modelos de datos/arquitectónicos comparables para que podamos tener una mejor idea del enfoque que deberíamos usar utilizando un marco que nunca hemos tenido. hecho uso de antes. ¡Cualquier idea/ayuda sería muy apreciada!Fundamentos de MVC y django

Respuesta

16

"modelos de arquitectura de datos/para que podamos tener una mejor idea del enfoque que debemos utilizar el uso de un marco que nunca hemos hecho uso de antes"

Django impone mejores prácticas en usted. No tiene muchas opciones y no puede cometer muchos errores.

MVC (mientras que un noble aspiración) se lleva a cabo de la siguiente manera:

  • de datos se define en los archivos "models.py" utilizando los modelos de Django ORM.
  • urls.py file maps URL para ver la función. Elija su URL sabiamente.
  • La función de vista hace todo el procesamiento, haciendo uso de modelos y métodos en los modelos
  • Presentación (mediante plantillas HTML) invocada por la función Ver. Básicamente, no se puede procesar en la presentación, solo iteración y toma de decisiones livianas

El modelo está definido para usted. Solo adhiérete a lo que Django hace naturalmente y serás feliz.

Arquitectónicamente, normalmente tienes una pila como esta.

  • Apache hace dos cosas.

    • sirve contenido estático directa e inmediatamente
    • manos URL dinámica a Django (a través de mod_python, mod_wsgi o mod_fastcgi). Django aplicaciones mapa URL para ver funciones (que acceden a la base de datos (a través de ORM/modelo) y mostrar a través de plantillas.
  • de base de datos utilizado por funciones de vista Django.

La arquitectura está bien definido . para que sólo se adhieren a lo Django hace de forma natural y serás feliz

no dude en leer el Django documentation es excelente;... quizás el mejor que hay

+0

Si usted está preocupado por el rendimiento o el uso de la memoria, a menudo es mejor tener un servidor web ligero independiente (como Nginx) para servir contenido estático, en lugar de utilizar Apache para ambos (aunque puede obtener un efecto similar si usa mod_wsgi en el modo daemon y Apache worker MPM). –

+0

@Carl Meyer: o lighttpd para servir contenido estático. –

5

primero, seguir t todo el mantra MVC. es importante tener una buena estructura en capas, pero MVC (como se definió originalmente) no es una, era una estructura modular, donde cada módulo GUI se divide en estos submódulos de árbol. nada para usar en la web aquí.

en el desarrollo web, realmente vale la pena tener una estructura en capas, donde la capa más importante es la de almacenamiento/modelado, que pasó a llamarse modelo de capa. Además de eso, necesita algunas otras capas, pero en realidad no son nada como vistas y controladores en el mundo de la GUI.

las capas de Django son más o menos:

  • de almacenamiento/modelado: models.py, obviamente. trate de poner allí la mayoría de los conceptos de "trabajo". todas las relaciones, todas las operaciones deberían implementarse aquí.
  • dispatching: mostly in urls.py. aquí convierte su esquema de URL en rutas de código. pensar en ello como una gran declaración de cambio(). intente obtener URL legibles, que se relacionen con las intenciones del usuario. Ayudará mucho agregar nuevas funcionalidades o nuevas formas de hacer las mismas cosas (como una interfaz de usuario AJAX más adelante).
  • recopilación: principalmente las funciones de vista, tanto las suyas como las vistas genéricas preconstruidas. aquí simplemente reúne todos los modelos para satisfacer la solicitud de un usuario. sorprendentemente en muchos casos, solo tiene que elegir una única instancia de modelo, y todo lo demás puede recuperarse de las relaciones. para estas URL, una vista genérica es suficiente.
  • presentación: las plantillas. si la vista le proporciona los datos que necesita, es lo suficientemente simple como para convertirla en una página web. es aquí donde agradecerá que las clases modelo tengan buenos accesores para obtener cualquier clase de datos relevantes de cualquier instancia determinada.
+0

+1. Exactamente correcto. –

0

Para comprender fundementals Django Django y los toma en MVC, consultar la siguiente: http://www.djangobook.com/

Como punto de partida a ensuciarse las manos con ... " ... tratando de encontrar algún comparables datos/modelos arquitectónicos "

Aquí hay una forma rápida y sucia de realizar una ingeniería inversa de una base de datos para obtener un archivo models.py, que luego puede inspeccionar para ver cómo lo manejaría django.

1.) obtenga un diagrama ER que coincida con su objetivo. Por ejemplo algo como esto http://www.databaseanswers.org/data_models/product_catalogs/index.htm

2.) crear una secuencia de comandos SQL a partir del diagrama ER y crear la base de datos, que sugieren PostgreSQL, MySQL como algunos tipo mesa no habrá forgien restricciones de clave, pero en una pizca de MySQL o SQLITE hará

3.) cree y configure una aplicación django para usar esa base de datos. Luego ejecute: python manage.py inspectdb

Esto al menos le dará un archivo models.py que puede leer para ver cómo intenta django modelarlo.

Tenga en cuenta que el comando inspeccionar está destinado a ser un atajo para tratar con la base de datos heredada cuando se desarrolla en django, y como tal no es perfecto. Asegúrese de leer la siguiente antes de intentar esto: http://docs.djangoproject.com/en/dev/ref/django-admin/#ref-django-admin