私はdjangoのエラーメッセージを、フォーム入力ボックス自体の代わりにプレースホルダとしてフォームに表示したいと考えています。これはDjangoで可能ですか、それともJavascriptを書くことでこれを達成する必要がありますか?Djangoはテンプレートテンプレートをカスタムテンプレートに渡します
<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>
特定の興味深い。 {{エラー}}私はそこに絶対必要を考えているフォーム
によってスローされたDjangoのエラーメッセージが表示され、この
{{ login_form.password | placeholder:{{ error }} | addClass:"form-control" }}
に
{{ login_form.password | placeholder:"password" | addClass:"form-control" }}
:私はこれを変更したいのですがテンプレート変数の文字列値を取得する何らかの方法ですが、回答が見つかりません
編集:私は役に立たないと以下を試しました
<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>
@register.filter(name='placeholder')
def placeholder(value, token):
value.field.widget.attrs["placeholder"] = token
return value
Djangoはそれを訴えてTemplateSyntaxエラーをスローし、次のように私のカスタムtemplatetagが見えます:
プレースホルダは1がこれを行うことができる
'{{login_form.password |プレースホルダ:{{エラー|エスケープ}} | addClass: "form-control"}} 'エラーを返します –
更新されたものを試してください。私はそれにハッキングされていない方法はないと思います。テンプレートタグを別のテンプレートの内部に置くと、django( '{{error | escape}}')の構文エラーとみなされます –