Я хотел бы отображать сообщения об ошибках django внутри формы в качестве заполнителя, а не выше самого окна ввода формы. Возможно ли это в Django, или я должен достигнуть этого, написав Javascript?Django pass template variable to custom templatetag
<div class="form-group">
{% if login_form.password.errors %}
{% for error in login_form.password.errors %}
<p>{{ error }}</p>
{% endfor %}
{% endif %}
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-key fa-fw"></i></span>
{{ login_form.password | placeholder:"password" | addClass:"form-control" }}
</div>
</div>
Конкретные направления интереса. Я хотел бы изменить это:
{{ login_form.password | placeholder:"password" | addClass:"form-control" }}
К этому
{{ login_form.password | placeholder:{{ error }} | addClass:"form-control" }}
где {{ошибка}} это сообщение об ошибке Джанго выброшен формой
Я думаю, там должно быть быть каким-то образом получить строковое значение переменной шаблона, но не может найти ответы
EDIT: Я пробовал следующее, безрезультатно
<div class="form-group">
{% if login_form.password.errors %}
{% for error in login_form.password.errors %}
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-key fa-fw"></i></span>
{{ login_form.password | placeholder:{{ error|escape }} | addClass:"form-control" }}
</div>
{% endfor %}
{% endif %}
</div>
Мой заказ templatetag выглядит следующим образом
@register.filter(name='placeholder')
def placeholder(value, token):
value.field.widget.attrs["placeholder"] = token
return value
Джанго вызывает ошибку TemplateSyntax жалуясь, что:
заполнителем требует 2 аргумента, 1 при условии
'{{login_form.password | placeholder: {{ошибка | escape}} | addClass: "form-control"}} 'Выдает сообщение об ошибке –
Попробуйте обновленную версию. Я не думаю, что это не взломанный способ. Наличие тега шаблона внутри другого будет рассматриваться как синтаксическая ошибка django ('{{ошибка | escape}}') –