まず、Django テンプレートでポストバックを確認する正しい方法は次のとおりです。
{% if request.POST %}
<div id="elementThatShouldBeInTheDOMIfPostBack">
</div>
{% endif %}
次に、N 番目のポストバックの場合、つまり検証エラーが原因で N が何であるかを判断するエレガントな方法はありますか?
まず、Django テンプレートでポストバックを確認する正しい方法は次のとおりです。
{% if request.POST %}
<div id="elementThatShouldBeInTheDOMIfPostBack">
</div>
{% endif %}
次に、N 番目のポストバックの場合、つまり検証エラーが原因で N が何であるかを判断するエレガントな方法はありますか?
一般に、django テンプレートにロジックを含めることは悪い習慣です。django のテンプレートは、ビュー関数によって計算/処理されたものを表すためにのみ使用されます。ビュー関数でそれを行う必要があります。セッションの使用:
#----views.py------
from django.shortcuts import render
from forms import MyForm
def someview(request):
form = MyForm()
if not 'postbacks' in request.session:
request.sesson['postbacks'] = {}
if request.path not in request.sesson['postbacks']:
request.sesson['postbacks'][request.path] = 1
if request.method == 'POST':
form = MyForm(request.POST)
if not form.is_valid():
request.sesson['postbacks'][request.path] += 1
else:
request.sesson['postbacks'][request.path] = 1
return render(request,
'myapp/tamplate.html',
{'form': form,
'postback': request.sesson['postbacks'][request.path]})
次に、テンプレートで次を使用します。
{{ postback }}
乾杯!役に立ったと思われる場合は、この回答に賛成票を投じることを忘れないでください;)