71 votes

Un moyen de rendre {% extend '...'%} conditionnel? - Django

J'aimerais partager un modèle entre les appels HTTP AJAX et regualr HTTP. La seule différence est qu'un modèle doit être servi avec le fichier HTML base.html, l'autre sans.

Une idée?

135voto

Cruel Points 1077

Les autres réponses nécessitent que vous passiez une variable de contexte supplémentaire. Mais tant que vous pouvez accéder à l'objet de requête, il n'y a aucun besoin:

 {% extends request.is_ajax|yesno:"app/base_ajax.html,app/base.html" %}
 

J'ai trouvé cela beaucoup plus pratique.

89voto

Daniel Roseman Points 199743

Utilisez une variable.

 {% extends base_template %}
 

et à votre avis, définissez-le sur "base.html" dans votre vue ou sur un nouveau fichier "ajax.html" qui fournit simplement le bloc et rien d'autre.

28voto

FakeRainBrigand Points 12463
 {% extends override_base|default:'base.html' %}
 

Ps je sais que c’est une vieille réponse, mais je l’ai trouvée en cherchant une réponse. Peut-être que ça va aider quelqu'un d'autre avec le même problème.

9voto

Tom Gruner Points 3570

Vous pouvez utiliser {% extend variable%}

Transmettez un nom de modèle de base variable lors de la création du contexte dans la vue.

http://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#extends

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X