Тег внутри тега в шаблоне django

Я пытаюсь сделать что-то вроде следующего:

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

но он, похоже, не поддерживается, так как я получаю следующую ошибку:

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

есть ли способ достичь этого в шаблоне или мне нужно определить action на мой взгляд?

2 ответов


самым простым решением будет:

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

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

вы не можете сделать это:

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

вы можете использовать только один раз {% ... %} а затем внутри этого вы можете использовать теги, переменные и т. д... например, если у вас есть внутри переменной с именем url_with_vars вы должны сделать это:

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

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

совет: внутри {% .... %} вы можете вызвать переменную django без использования {{..}} означает, что в шаблоне для отображения переменной django вы используете {{variable}}, а внутри {% whatever_action ... %} вы не делать как {% whatever_action {{variable}} %} правильно будет {% whatever_action variable %}

но тогда вы поймете, что есть другие проблемы, чтобы назначить это значение url с vars переменной.

если вы пытаетесь добавить action="{% url 'settings' var1 var2 %}" %} в форме, я настоятельно рекомендую вам сделать что-то вроде:

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

что я пытаюсь сказать в этой части, так это то, что вам будет намного проще иметь объявление формы в шаблоне и значения внутри формы в подзадаче, потому что это будет слишком трудно сделать то, что вы пытаетесь сделать