Actuellementmodèle choisir Dynamiquement pour la balise d'inclusion django
J'ai une étiquette d'inclusion qui est codé quelque chose comme ceci:
@register.inclusion_tag('forms/my_insert.html', takes_context=True)
def my_insert(context):
# set up some other variables for the context
return context
Dans mon modèle, je l'inclure en mettant en {% my_insert %}
Nouvelle demande de fonctionnalité
Nous voulons maintenant tester une nouvelle mise en page - c'est juste un changement au modèle, pas de changement aux variables de contexte. J'accomplir cela en appelant la première
@register.inclusion_tag('forms/my_new_insert.html', takes_context=True)
def my_new_insert(context):
return my_insert(context)
Pour utiliser le nouveau modèle, je dois utiliser:
{% ifequal some_var 0 %}
{% my_insert %}
{% endifequal %}
{% ifnotequal some_var 0 %}
{% my_new_insert %}
{% endifnotequal %}
La question
Est-il possible de choisir le modèle dans la fonction qui configure le contexte de balise template?
Je imagine il pourrait être quelque chose comme:
@register.inclusion_tag('forms/my_insert.html', takes_context=True)
def my_insert(context):
# set up some other variables for the context
if context['some_var'] == 0:
context['template'] = 'forms/my_insert.html'
else:
context['template'] = 'forms/my_new_insert.html'
return context
Cela ne fonctionne pas quand je l'ai essayé. Je ne vois aucune indication que cela devrait dans la documentation que vous avez liée. – mqsoh
Cela fonctionne pour moi. Django 1.9 – Sharmila