Vues de classe dans Django

La vue

Django pointe vers une fonction, ce qui peut poser problème si vous ne souhaitez modifier qu'un peu de Fonctionnalité. Oui, je pourrais avoir des millions d'arguments de mots clés et même plus d'instructions if dans 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'est toujours pas si similaire à l'utilisation d'un autre modèle de données. Le groupe a aussi des membres etc...

Une façon serait de pointer les vues vers les méthodes de classe, puis d'étendre cette classe. Quelqu'un a-t-il essayé cette approche ou a-t-il une autre idée?

请先 登录 后评论

3 réponses

Community

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

D'un autre côté, il peut y avoir des idiomes communs que vous voudriez extraire de votre objet

请先 登录 后评论
Harley Holcombe

À moins que vous ne vouliez faire quelque chose d'un peu complexe, l'utilisation des vues génériques est la solution. Ils sont bien plus puissants que leur nom ne l'indique, et si vous affichez simplement des données de modèle, des vues génériques feront l'affaire.

请先 登录 后评论
Andrew Ingram

Les vues génériques seront généralement la solution, mais en fin de compte, vous êtes libre de gérer les URL comme vous le souhaitez. FormWizard fait les choses d'une manière basée sur les classes, comme le font certaines applications pour les API RESTful.

Fondamentalement, avec une URL, vous disposez d'un tas de variables et d'un emplacement pour fournir un callable, ce que vous fournissez dépend entièrement de vous - la manière standard est de fournir une fonction - mais finalement Django ne met aucune restriction sur ce que vous faites .

Je suis d'accord que quelques exemples supplémentaires de la façon de procéder seraient bien, FormWizard est probablement le point de départ cependant.

请先 登录 后评论