ActualmenteElección dinámica de la plantilla de etiqueta de inclusión Django
tengo una etiqueta de inclusión que se codifica algo como esto:
@register.inclusion_tag('forms/my_insert.html', takes_context=True)
def my_insert(context):
# set up some other variables for the context
return context
En mi plantilla, lo incluyo poniendo en {% my_insert %}
Nueva solicitud de funciones
Ahora queremos probar un nuevo diseño: es solo un cambio en la plantilla, sin cambios en las variables de contexto. Estoy lograr esto mediante una llamada al primer
@register.inclusion_tag('forms/my_new_insert.html', takes_context=True)
def my_new_insert(context):
return my_insert(context)
Para utilizar la nueva plantilla, tengo que usar:
{% ifequal some_var 0 %}
{% my_insert %}
{% endifequal %}
{% ifnotequal some_var 0 %}
{% my_new_insert %}
{% endifnotequal %}
La pregunta
¿Hay una manera de elegir la plantilla en la función que configura el contexto de la etiqueta de la plantilla?
Me imagino podría ser algo como:
@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
Esto no funcionó cuando lo probé. No veo ninguna indicación de que deba aparecer en la documentación a la que se vinculó. – mqsoh
Esto funciona para mí. Django 1.9 – Sharmila