67 votes

Django est-il destiné au front-end ou au back-end ?

Je vois souvent des gens dire que leur backend est implémenté en Django, mais Django n'est-il pas censé être pour le frontend ? Je suppose que le backend fait référence à la logique métier et le frontend à la présentation. Est-ce que quelque chose m'échappe ?

1 votes

La première page de ce site est site vous indique ce qu'est django : un cadre Web Python de haut niveau

118voto

e-satis Points 146299

Ni l'un ni l'autre.

Django est un cadre de travail, pas un langage. Python est le langage dans lequel Django est écrit.

Django est une collection de librairies Python qui vous permet de créer rapidement et efficacement une application Web de qualité, et convient aussi bien au front-end qu'au back-end.

Cependant, Django est assez célèbre pour son "Django admin", un backend généré automatiquement qui vous permet de gérer votre site web en un clin d'œil pour de nombreux cas d'utilisation simples sans avoir à coder beaucoup.

Plus précisément, pour le front-end, Django vous aide à sélectionner, formater et afficher les données. Il propose la gestion des URL, un langage de templating, des mécanismes d'authentification, des crochets de cache et divers outils de navigation tels que les paginateurs.

Pour l'arrière-plan, Django est livré avec un ORM qui vous permet de manipuler facilement votre source de données, des formulaires (une implémentation indépendante de HTML) pour traiter les entrées de l'utilisateur et valider les données et les signaux, et une implémentation du modèle observateur. Plus une tonne de petits outils astucieux spécifiques à chaque cas d'utilisation.

Pour le reste du travail de backend que Django ne permet pas d'effectuer, vous utilisez simplement Python. La logique métier est un terme assez large.

Vous voulez probablement savoir aussi que Django est livré avec le concept d'applications, une bibliothèque Django autonome et enfichable qui résout un problème. La communauté Django est immense, et il existe donc de nombreuses applications qui font appel à une logique commerciale spécifique que Django n'offre pas.

15voto

Chris Pratt Points 53859

Il semble que vous parliez en fait d'un modèle MVC (Model-View-Controller), où la logique est séparée en plusieurs " niveaux ". Django, en tant que framework, suit le modèle MVC (de façon assez lâche). Vous avez des modèles qui contiennent votre logique métier et se rapportent directement aux tables de votre base de données, des vues qui agissent en fait comme le contrôleur, gérant les demandes et renvoyant les réponses, et enfin, des modèles qui gèrent la présentation.

Django n'est pas seulement l'un d'entre eux, c'est un cadre complet pour le développement d'applications et il fournit tous les outils dont vous avez besoin à cette fin.

Frontend vs Backend n'est que sémantique. Vous pouvez potentiellement construire une application Django qui est entièrement "backend", en utilisant son package contrib admin intégré pour gérer les données d'une application entièrement séparée. Ou bien, vous pourriez l'utiliser uniquement pour le "frontend", en utilisant ses vues et ses modèles mais en utilisant quelque chose d'autre pour gérer les données. Le plus souvent, il est utilisé pour les deux. L'administration intégrée (le "backend") fournit un moyen facile de gérer vos données et vous construisez des applications dans Django pour présenter ces données de différentes manières. Cependant, si vous le souhaitez, vous pouvez également créer votre propre "backend" dans Django. Vous n'êtes pas obligé d'utiliser l'administrateur par défaut.

5voto

Marcin Points 25366

(a) Django est un framework, pas un langage

(b) Je ne suis pas sûr de ce que vous manquez - il n'y a aucune raison pour laquelle vous ne pouvez pas avoir une logique d'entreprise dans une application web. Dans Django, on s'attend normalement à ce que la logique de présentation soit séparée de la logique métier. Ce n'est pas parce qu'elle est hébergée dans le même serveur d'application que les deux couches sont entremêlées.

(c) Django fournit des modèles, mais il ne fournit pas de bibliothèques riches pour générer du contenu côté client.

0 votes

Mais si la logique métier se trouve dans l'application Web (architecture à un seul niveau ?), il n'y a pas de distinction entre le front-end et le back-end, n'est-ce pas ? C'est juste un single-tier.

0 votes

Kate : Vous pourriez avoir toute votre logique de présentation dans le navigateur, la logique métier dans un niveau intermédiaire de Django, et une couche de base de données. Vous pourriez également avoir un projet django séparé fournissant des services backend.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X