Cet article est l'article du 13ème jour du calendrier de l'avent Django 2019. Dans cet article, j'aimerais résumer la vue d'ensemble de Django "Vue générique basée sur les classes" et les relations de classe héritées.
Nous nous référons et citons la Documentation officielle de Django 3.0, la dernière version au moment de la rédaction de cet article.
Premièrement, une "vue" dans Django est une logique encapsulée [^ 1] qui traite une requête utilisateur et renvoie une réponse. Définissez les données à afficher dans le "modèle", qui est la couche de présentation, et effectuez le traitement en réponse aux demandes. Bien que controversé, le "contrôleur" dans le framework MVC peut être plus proche de l'image générale [^ 2].
Django fournit une «vue générique basée sur les classes» qui généralise la logique de développement de cette vue. Comme son nom l'indique, la vue générique basée sur les classes est une vue basée sur les classes, vous pouvez donc réutiliser le code en utilisant l'héritage [^ 3]. En utilisant la vue générale, vous pouvez éviter la redondance et les modèles de chaudière dans le développement Web, et développer en tirant le meilleur parti du concept de conception de Django de "Moins de code" et "Ne vous répétez pas".
Une liste et un aperçu des vues génériques. L'importance est fixée en fonction de la fréquence d'utilisation personnelle dans le développement normal. Je pense que l'importance dépend des caractéristiques du service.
Groupe de vues de base qui définissent les fonctions minimales comme une vue à usage général. La classe ici est également héritée d'autres vues génériques.
classe | importance | Aperçu |
---|---|---|
View | ★★★ | Vue de base de la vue générique |
TemplateView | ★★★ | Vue de base de la vue qui rend le modèle |
RedirectView | ★★☆ | Afficher pour la redirection |
Un groupe de vues pour afficher la liste / l'écran de détail. Je pense que c'est la classe la plus fréquente dans le développement de sites Web en général.
classe | importance | Aperçu |
---|---|---|
DetailView | ★★★ | Afficher pour afficher l'écran de détail |
ListView | ★★★ | Vue pour afficher l'écran de liste |
Un groupe de vues pour afficher l'écran d'édition. Cette classe peut être utilisée sur les écrans d'opération CRUD généraux.
classe | importance | Aperçu |
---|---|---|
FormView | ★★☆ | Affichage de l'écran du formulaire |
CreateView | ★★☆ | Vue de l'écran de création |
UpdateView | ★★☆ | Mettre à jour la vue d'écran |
DeleteView | ★★☆ | Supprimer la vue d'écran |
Il s'agit d'un groupe de vues permettant d'afficher une liste par année ou par mois, comme un blog.
classe | importance | Aperçu |
---|---|---|
ArchiveIndexView | ★☆☆ | Afficher pour voir la liste des éléments avec la dernière date |
YearArchiveView | ★☆☆ | Vue pour afficher l'écran de liste par année |
MonthArchiveView | ★☆☆ | Vue pour afficher l'écran de la liste mensuelle |
WeekArchiveView | ★☆☆ | Afficher pour afficher l'écran de liste par semaine |
DayArchiveView | ★☆☆ | Vue pour afficher l'écran de la liste quotidienne |
TodayArchiveView | ★☆☆ | Vue pour afficher l'écran de liste de la date du jour |
DateDetailView | ★☆☆ | Vue pour afficher l'écran des détails pour chaque date |
Une vue générique est elle-même configurée pour hériter d'une autre vue générique ou de plusieurs héritages d'un Mixin générique. Une vue générique définit le comportement d'une vue en définissant ses attributs et son comportement. Notez que la plupart des attributs ont des accesseurs définis pour eux, il est donc possible de changer dynamiquement la valeur d'un attribut en remplaçant l'accesseur.
Django.views.generic.base
)View
est la classe de base pour toutes les vues génériques, et View
a des attributs référencés par d'autres classes telles que request`` kwargs
.
TemplateView
consiste en l'héritage multiple de TemplateResponseMixin
pour le rendu du fichier modèle et de ContextMixin
qui transmet les variables de contexte au modèle. Ces deux Mixins sont hérités par toutes les vues génériques sauf RedirectView
.
Django.views.generic.list``` Django.views.generic.detail
)La principale différence entre «ListView» et «DetailView» est Mixin, qui est entouré d'un cadre rouge. Vous pouvez voir que la structure de base est presque la même, seule la différence dépend du fait que la variable de contexte transmise au modèle est une liste ou un seul objet.
Django.views.generic.edit
)Comme il existe de nombreuses classes héritées, seules la vue à usage général et le mixin dans le même module sont entourés d'un cadre rouge. Toutes les vues à usage général, à l'exception de DeleteView
, héritent de FormMixin
, qui génère des formulaires, et de ProcessFormView
, qui effectue le rendu à GET et la validation à POST. Pour les vues restantes et Mixin, les classes selon l'opération CRUD associée à chaque vue d'édition sont héritées.
Je pense qu'il est facile pour les nouveaux utilisateurs de Django de se faire une idée de Django, comme par exemple saisir le concept de généralisation des vues à usage général, comprendre les classes et les Mixins et leurs attributs (champs) et comportements (méthodes). Il existe de nombreux bons articles sur le système de procédures d'affichage général basé sur les classes, j'ai donc essayé d'obtenir un aperçu graphique de cet article.
Recommended Posts