2012-07-15 25 views
12

Estoy estudiando el framework Django, leyendo la documentación, pero no he encontrado referencias sobre cómo crear más de una aplicación en el mismo proyecto, donde cada aplicación tiene múltiples aplicaciones. Por ejemplo, la aplicación Blog, con aplicaciones Usuarios, Comentarios, Publicaciones, ..., Implementación y Tareas con las aplicaciones Clientes, Usuarios, Adjuntos ... ¿Cómo debo hacer?Múltiples aplicaciones con django

localhost 
localhost/blog/ (posts, user, comment, ...) 
localhost/tasks/ (task, user, attachment, ...) 

<my project> 
-- manage.py 
-- <project name> 
-- -- blog 
-- -- -- posts 
-- -- -- -- views.py 
-- -- -- -- urls.py 
-- -- -- -- models.py 
... 
-- -- tasks 
-- -- -- attachments 
-- -- -- -- views.py 
-- -- -- -- urls.py 
-- -- -- -- models.py 
... 

Respuesta

12

Cada aplicación tendrá estos en su carpeta:

  • views.py
  • models.py
  • otros opcionales (admin.py ...)

Por lo tanto, usted tiene:

Project 
-- manage.py 
-- Project 
-- -- views.py 
-- -- models.py 
-- -- others 
-- -- APP1 
-- -- -- views.py 
-- -- -- models.py 
-- -- -- others 
-- -- APP2 
-- -- -- views.py 
-- -- -- models.py 
-- -- -- others 
-- -- APPX 
-- -- -- views.py 
-- -- -- models.py 
-- -- -- others 

La utilidad es la distinción entre funcionalidades (llame a Notification.models.notification si tiene una aplicación de notificación y un modelo de notificación).

Un modelo es la arquitectura de un objeto. Por lo tanto, llamará a User.username o Task.name. Django crea automáticamente en la base de datos la tabla.

Otra herramienta de Django: puede utilizar la vista de administración (wich puede editar, crear, editar, objetos que utilizan los modelos) o cambiar esta interfaz (vea that page)

Si lo desea, puede hacer que un sistema de identificación y crea formularios, puedes usar tu propio sistema de administración.

CON SU EJEMPLO:

<my project> 
-- manage.py 
-- <project name> 
-- -- urls.py 
-- -- models.py <--- User model exists in Django and here you can add informations to the defaut model it is in this file because I suppose it will be used in all your project. 
-- -- views.py 

-- -- blog <--- It's an app. 
-- -- -- -- views.py 
-- -- -- -- urls.py 
-- -- -- -- models.py <--- Posts, Comments are models for the blog, so you explain them here. 

-- -- tasks <--- Another app. 
-- -- -- attachments 
-- -- -- -- views.py 
-- -- -- -- urls.py 
-- -- -- -- models.py <--- Task model for exemple 
+0

me ha ayudado mucho, gracias –

+0

¡Buena suerte! ¡Estuve en tu caso hace dos semanas y ahora pienso django en un lenguaje increíble! – nlassaux

+0

Comencé a estudiarlo para un proyecto en la Universidad de automatización del hogar con la red ZigBee –

2

Te encuentras confundido acerca de lo que es una aplicación. Una aplicación es solo una colección de funcionalidades relacionadas, generalmente (pero no necesariamente) incluyendo modelos, vistas y plantillas.

"Usuarios" no es una aplicación, es un modelo, pero normalmente usaría la aplicación integrada django.contrib.auth para proporcionar la funcionalidad del usuario. Cualquier aplicación puede usar el código de cualquier otra aplicación, incluidos los modelos. Y puedes tener tantos modelos como quieras en una sola aplicación.

+0

¿Y si necesito para hacer mi sitio con una interfaz de administración, sin utilizar el contrib.admin. ¿Cómo separar la lógica? "Esta vista es la interfaz de administración y esta es la interfaz pública"? –

+0

Si quieres. O divídalo en dos archivos de vista: las vistas son solo funciones de Python, pueden vivir en cualquier lugar. O tiene una aplicación separada para todas las funciones administrativas de todas tus otras aplicaciones. Tu decides. –

9

Cosas que usted debe entender acerca de Django:

  1. correlación de URL no tiene relación con el sistema de archivos o el código de la aplicación. Esto significa que sus URL no tienen una relación de 1 a 1 con su código. Puede tener varias URL apuntando a la misma pieza de código (apuntando a la misma vista). Esto es diferente a PHP, por ejemplo, donde las URL se asignan al sistema de archivos.

  2. Las aplicaciones no son "widgets" o "portlets". La aplicación es solo un módulo de Python con algunos archivos ya incluidos (views.py, models.py y __init__.py); y puedes tener tantas aplicaciones como quieras. También puede tener aplicaciones a las que no se puede acceder mediante una URL; solo están ahí para admitir otras aplicaciones; y sus aplicaciones tampoco tienen que tener el mismo nombre que las URL.

Así que teniendo esto en mente ... puede crear una aplicación, lo llaman www, y en el interior de su views.py, definir estos métodos muy creativa con nombre:

def blog(request): 
    pass 

def tasks(request): 
    pass 

En su urls.py, se puede tener:

url(r'^blog/$','www.views.blog',name='blog-index'), 
url(r'^blog/posts/$','www.views.blog',name='blog-posts',kwargs={'view_posts': True}), 
url(r'^tasks/$','www.views.tasks',name='task-index'), 
url(r'^tasks/attachments/$','www.views.tasks',name='task-attachments'), 
+0

Comparar Django a PHP es incorrecto. Django es un marco en la parte superior de Python. PHP podría ser comparado con Python o con el lenguaje de plantillas Jinja, pero no con Django. – Mikhail

Cuestiones relacionadas