langage - script python django




Vues de classe dans Django (6)

Django vue Django pointe sur une fonction, ce qui peut poser problème si vous ne souhaitez modifier que quelques fonctionnalités. Oui, je pourrais avoir des millions d'arguments de mots clés et même plus si les déclarations de la fonction, mais je pensais plutôt à une approche orientée objet.

Par exemple, j'ai une page qui affiche un utilisateur. Cette page est très similaire à la page qui affiche un groupe, mais elle n’a toujours pas la même fonction que d’utiliser un autre modèle de données. Le groupe a aussi des membres etc ...

Une solution serait de pointer les vues sur les méthodes de classe, puis d’étendre cette classe. Est-ce que quelqu'un a essayé cette approche ou a une autre idée?


À moins que vous ne vouliez faire quelque chose d'un peu complexe, utilisez les vues génériques. Ils sont beaucoup plus puissants que leur nom ne l'indique. Si vous ne faites qu'afficher des vues de modèle, des vues génériques feront l'affaire.


Il me semble que vous essayez de combiner des choses qui ne devraient pas être combinées. Si vous souhaitez effectuer un traitement différent dans votre vue selon qu'il s'agisse d'un objet Utilisateur ou Groupe que vous souhaitez examiner, vous devez utiliser deux fonctions d'affichage différentes.

D'autre part, il peut y avoir des idiomes communs que vous voudriez extraire de vos vues de type object_detail ... peut-être pourriez-vous utiliser un décorateur ou simplement des fonctions d'assistance?

-Dan


Les vues génériques sont généralement la solution, mais vous êtes finalement libre de gérer les URL comme vous le souhaitez. FormWizard fait les choses en classe, comme certaines applications pour les API RESTful.

Fondamentalement, avec une URL, on vous donne un tas de variables et un endroit pour fournir un appelable. Ce que vous fournissez est à vous de choisir - la méthode standard consiste à fournir une fonction - mais au final, Django n'impose aucune restriction à ce que vous faites.

Je conviens que quelques exemples supplémentaires de la façon de procéder seraient utiles, mais FormWizard est probablement le point de départ.


Si vous affichez simplement des données de modèles, pourquoi ne pas utiliser les vues génériques de Django ? Ils sont conçus pour vous permettre d'afficher facilement les données d'un modèle sans avoir à écrire votre propre vue et des informations sur le mappage des paramètres d'URL sur des vues, la récupération de données, la gestion des cas marginaux, le rendu de la sortie, etc.


Vous pouvez toujours créer une classe, remplacer la fonction __call__ , puis faire pointer le fichier URL vers une instance de la classe. Vous pouvez consulter la classe FormWizard pour voir comment cela est effectué.


Vous pouvez utiliser les vues génériques de Django. Vous pouvez facilement obtenir les fonctionnalités souhaitées via des vues génériques Django.





oop