2012-01-31 23 views
11

A menudo veo gente que afirma que su servidor se implementa en Django, pero ¿no se supone que Django es para la interfaz? Asumo que el backend se refiere a la lógica de negocios donde el frontend se refiere a la presentación. ¿Me estoy perdiendo de algo?¿Django es para frontend o back-end?

+1

La primera página en su [sitio] (https://www.djangoproject.com/) le dice lo que es django: un marco web de Python de alto nivel –

+1

@Marcin Soy muy nuevo en el desarrollo web y estoy ' Estoy confundido acerca de lo que Django podría hacer por la lógica de negocios. Digamos, con un sitio como Paypal, ¿se implementaría todo el proceso de transacción con Django ya que ese es el nivel medio? ¿La lógica de presentación está en el navegador? – Kar

+0

@Kate: Claro, puede ser lo que quieras que sea. Todavía no entiendo por qué estás obsesionado con esta cuestión de terminología. – Marcin

Respuesta

38

Ninguno.

Django es un marco, no es un idioma. Python es el lenguaje en el que se escribe Django.

Django es una colección de libs de Python que le permite crear de manera rápida y eficiente una aplicación web de calidad, y es adecuada tanto para frontend como para back-end.

Sin embargo, Django es bastante famoso por su "Administrador de Django", un backend generado automáticamente que le permite administrar su sitio web en un abrir y cerrar de ojos para muchos casos de uso simple sin tener que codificar mucho.

Más precisamente, para la interfaz, Django lo ayuda a seleccionar, formatear y visualizar los datos. Cuenta con administración de URL, un lenguaje de plantillas, mecanismo de autenticación, ganchos de caché y varias herramientas de navegación como los paginators.

Para el backend, Django viene con un ORM que le permite manipular su fuente de datos con facilidad, formularios (una implementación independiente de HTML) para procesar la entrada del usuario y validar datos y señales, y la implementación del patrón de observador. Además de un montón de pequeñas herramientas específicas de casos de uso.

Para todo el resto del trabajo de back-end Django no ayuda, solo usa Python regular. La lógica de negocios es un término bastante amplio.

Probablemente también desee saber que Django viene con el concepto de aplicaciones, una biblioteca Django que se puede conectar y que resuelve un problema. La comunidad Django es enorme, por lo que hay numerosas aplicaciones que hacen una lógica comercial específica que Django no tiene.

+0

Si la lógica de negocios está separada de la presentación en una arquitectura de 3 niveles, entonces no debería haber necesidad de utilizar Django para la lógica comercial, ¿verdad? Todas las cosas 'webby' solo están presentes en la capa de presentación, ¿verdad? – Kar

+0

@Kate: en django, es de esperar que la lógica empresarial esté separada de la lógica de presentación. – Marcin

+0

Django incrusta las herramientas para la lógica de negocios también: el ORM y los formularios. No tiene que usarlos, pero lo harán mucho más rápido si lo hace. –

3

(a) Django es un marco, no es un lenguaje

(b) No estoy seguro de lo que se está perdiendo - no hay ninguna razón por la cual no se puede tener la lógica de negocio en una aplicación web. En Django, normalmente esperaría que la lógica de presentación se separe de la lógica comercial. El hecho de que esté alojado en el mismo servidor de aplicaciones no implica que las dos capas estén enredadas.

(c) Django proporciona plantillas, pero no proporciona bibliotecas ricas para generar contenido del lado del cliente.

+0

Pero si la lógica comercial está en la aplicación web (arquitectura de un solo nivel?), Entonces no hay distinción entre el front-end y el back-end, ¿verdad? Es solo un nivel. – Kar

+0

@Kate: puede tener toda su lógica de presentación en el navegador, la lógica de negocios en un nivel intermedio django y una capa de base de datos. También podría tener un proyecto independiente de django que brinde servicios de back-end. – Marcin

4

Parece que en realidad está hablando de un patrón MVC (Modelo-Vista-Controlador), donde la lógica se divide en varios "niveles". Django, como marco, sigue a MVC (vagamente). Tiene modelos que contienen su lógica comercial y se relacionan directamente con tablas en su base de datos, vistas que en efecto actúan como el controlador, manejando solicitudes y respuestas de retorno, y finalmente, plantillas que manejan la presentación.

Django no es solo uno de estos, es un marco completo para el desarrollo de aplicaciones y proporciona todas las herramientas que necesita para tal fin.

Frontend vs Backend es todo semántica. Podrías construir una aplicación Django que sea completamente "back-end", usando su paquete incorporado de contrib de administración para administrar los datos de una aplicación completamente separada. O bien, podría usarlo únicamente para "frontend", simplemente usando sus vistas y plantillas, pero usando algo completamente diferente para administrar los datos. Por lo general, se usa para ambos. El administrador incorporado (el "backend") proporciona una manera fácil de administrar sus datos y crea aplicaciones dentro de Django para presentar esos datos de varias maneras.Sin embargo, si estuvieras inclinado, también podrías crear tu propio "back-end" en Django. No estás obligado a usar el administrador predeterminado.

Cuestiones relacionadas