Le but d'un framework MVC est de séparer la conception (templates) de la logique (controllers). Cependant, les langages de gabarit offrent souvent un degré limité de «logique de conception». Cela inclut les instructions if de base, les boucles, le filtrage, etc.Logique de contrôleur et logique de modèle, où dessinez-vous la ligne avec pagination?
J'ai créé une balise de modèle Django qui peut prendre n'importe quelle liste ou QuerySet et la "pagifier". Il divise la liste en pages en fonction d'une taille de page spécifiée, puis ajoute les pages dans le contexte. L'utilisation est comme suit:
{% pagify articles by 20 as pages %}
Je peux alors appeler un comprennent séparé pour itérer sur les pages et produire une belle liste de pages où je en avais besoin.
Cela m'a semblé une façon optimale de le faire car cela me permettait de faire une recherche dans n'importe quelle liste dans le contexte; Je n'ai pas eu à compter sur le contrôleur pour renvoyer les résultats paginés. Mais un collègue a fait valoir que cela semblait trop logique pour le modèle. Je pensais que cela relevait encore du domaine de la logique basée sur le design puisque la page fonctionnerait encore sans pagination, et la détermination de la taille de la page semble être une responsabilité de modèle.
Ma question, est-ce trop logique pour le modèle? ou est-ce une façon propre de gérer cela?
Votre collègue a l'air d'un gars plutôt intelligent. : P –