2

フォームのフィールドに何も入力せずに、ユーザーが登録フォームの [送信] ボタンをクリックしたときに例外を発生させるにはどうすればよいですか?


これが発生した場合、ユーザーが必須フィールドへの入力を忘れた場合に通常表示されるフィールド エラーを表示せずに、その 1 つのエラー(「送信する前にフォームに記入してください。」) のみを表示したいと考えています。

つまり、ユーザーが 1 つのフィールドに入力せずに送信ボタンを押した場合、「送信する前にフィールドに入力してください」というエラーを 1 つだけ表示したいと考えています。


これを達成するには2つの方法があると思います:

  • フォームのクリーン メソッドのどこかでエラーを生成します。このエラーが生成された場合に他のすべてのエラーを無視する if ステートメントをテンプレートに含めます。

  • ユーザーが送信ボタンを押すとすぐに、実際のテンプレートでエラーを生成します (これが可能かどうかはわかりません)。

最初のオプションの問題は、次のような if ステートメントを使用する必要があることです。しかし、その特定のエラーを特定する方法がわかりません。

{% if form.special_error %}
...display the special error
...disregard any other field or non_field errors
{% endif %}

if ステートメントでform.errorsform.non_field_errors、およびを使用する方法しか知りません。form.<specific_field>これらのいずれも、この特別なエラーが発生したことを明確に示すものではありません。

これを行う簡単な方法が必要です!!!

4

1 に答える 1

3

その場合は、フォームを検証する代わりに、フォームが変更されたかどうかをサーバー側で確認できます。これを行うことにより:

def submit_form(request):
   if request.method == 'POST':
         form = Form(request.POST)
         if not form.has_changed():
             #Generate Error 
于 2012-11-29T06:12:50.230 に答える