2009-11-07 5 views
1

Je développe depuis longtemps le framework Symfony, mais maintenant je dois travailler avec Django et j'ai du mal à faire quelque chose comme un "composant" ou un "partiel" dans Symfony.Comment implémenter Symfony Partials ou composants dans Django?

Cela dit, voici mon objectif:

J'ai une page web avec beaucoup de petits widgets, tous ceux-ci doivent leur logique - situé dans un « views.py » Je suppose. Mais, comment puis-je dire à Django d'appeler toute cette logique et de tout rendre comme une page Web?

Répondre

3

Il ressemble à ce que vous cherchez quelque chose comme custom template tags ...

Vous pouvez écrire votre propre jeu de balises qui traitent une logique personnalisée et le retour des morceaux de modèle qui sont réutilisables d'une manière très semblable à un widget .

+0

Oui, il semble que ce soit la manière exacte de le faire dans Django. Merci beaucoup! Semble bizarre, mais c'est un effet de cet ensemble "modèles pour les non-développeurs" je suppose ... –

1

En supposant que vous allez utiliser les composants à des endroits différents sur des pages différentes, je suggérerais d'essayer {% include "foo.html"%}. L'un des inconvénients du langage de template Django est qu'il n'y a pas de concept de macros, donc vous devez être très cohérent dans les noms de valeurs dans le contexte que vous passez à votre template principal pour que le template inclus trouve des choses à la recherche de.

Alternativement, dans la vue, vous pouvez appeler le moteur de template pour chaque composant et enregistrer le résultat dans une valeur passée dans le contexte. Ensuite, dans le modèle principal, utilisez simplement la valeur dans le contexte.

Je ne suis pas friand de l'une ou l'autre de ces approches. Plus vos besoins en matière de modèles sont complexes, plus vous aurez envie de regarder Jinja2. (Et non, je n'achète pas la Django Party Line à propos des «concepteurs de gabarits» - n'en ai jamais vu dans ma vie.)

Questions connexes