AttualmenteScelta dinamica di modello per tag inclusione Django
Ho un tag di inclusione che è codificato o meno così:
@register.inclusion_tag('forms/my_insert.html', takes_context=True)
def my_insert(context):
# set up some other variables for the context
return context
Nel mio modello, ho includerlo mettendo in {% my_insert %}
Nuova richiesta di funzionalità
Ora vogliamo testare un nuovo layout: è solo una modifica al modello, nessuna modifica alle variabili di contesto. Sto realizzare questo chiamando il primo
@register.inclusion_tag('forms/my_new_insert.html', takes_context=True)
def my_new_insert(context):
return my_insert(context)
Per utilizzare il nuovo modello, devo usare:
{% ifequal some_var 0 %}
{% my_insert %}
{% endifequal %}
{% ifnotequal some_var 0 %}
{% my_new_insert %}
{% endifnotequal %}
La questione
C'è un modo per scegliere il modello nella funzione che imposta il contesto del tag del template?
mi immagino potrebbe essere qualcosa di simile:
@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
Questo non ha funzionato quando l'ho provato. Non vedo alcuna indicazione che dovrebbe essere nella documentazione a cui ti sei collegato. – mqsoh
Questo funziona per me. Django 1.9 – Sharmila