2014-06-04 6 views
8

Próbuję zrobić coś jak następuje:Tag wewnątrz znacznika w szablonie django

{% include "default_form.html" with action="{% url 'settings' var1 var2 %}" %} 

Ale to nie wydaje się być wspierane, jak pojawia się następujący błąd:

Could not parse the remainder: '"{%' from '"{%' 

Czy jest jakiś sposób osiągnięcia tego w szablonie lub czy muszę zdefiniować w moim widoku action?

Odpowiedz

12

Najprostszym rozwiązaniem byłoby:

{% url 'settings' var1 var2 as action_url %} 

{% include "default_form.html" with action=action_url %} 
+1

To jest idealne! proste i skuteczne. Dzięki. – NublicPablo

4

Nie możesz tego zrobić:

{% include "default_form.html" with action="{% url 'settings' var1 var2 %}" %} 

można użyć tylko raz {% ... %} a następnie wewnątrz, że można używać znaczników, zmiennych itp ... Na przykład, jeśli masz wewnątrz zmiennej o nazwie url_with_vars cię należy to zrobić:

{% url 'settings' var1 var2 as url_with_vars %} 

{% include "default_form.html" with action=url_with_vars %} 

wskazówka: Wewnątrz {% .... %} można nazwać zmienną django bez użycia {{..}} meani ng że w szablonie, aby wyświetlić zmienną django używasz {{variable}} ale wewnątrz {% whatever_action ... %} ty nie rób jak{% whatever_action {{variable}} %} poprawny sposób byłoby {% whatever_action variable %}

Ale wtedy zdajesz sobie sprawę, że nie ma innych problemów, aby przypisać tę wartość url vars do zmiennej.

Jeśli próbujesz dodać action="{% url 'settings' var1 var2 %}" %} do formularza, zdecydowanie zalecamy, aby zrobić coś takiego:

<form action="{% url 'settings' var1 var2 %}"> 
    {% include "default_form.html" %} 
</form> 

Co próbuję powiedzieć w tej części jest to, że to będzie dużo łatwiej aby mieć formę oświadczenia w szablonie, a wartości wewnątrz formularza w subtemplate, bo będzie zbyt trudne do zrobienia, co próbujesz zrobić