エラーの詳細
CRUD機能の「ユーザー登録」部分を実装中に、ユーザー名、メールアドレス、パスワードを入力して新規登録ボタンを押すと、Internal Server Error で送信エラーが発生しました。
また、Flaskのログには以下のエラーが記録されていました。werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a request that this server could not understand.
エラーの原因調査
エラーの原因を特定するために、以下の検証を行いました。
- フォームの各フィールドを個別に入力して送信し、どのフィールドでエラーが発生するかを確認。
- フォーム全体を入力して送信し、送信エラーの発生タイミングを探る。
今回の登録フォームは、未入力のフォームがあるときに赤文字で必須である文章が表示されるようになっています。
そこで①を検証することでフォームに原因がある場合、該当フォームで必須の文章ではなくエラーが出るので、原因を絞り込むことができます。
この方法ですが、普段プログラミングについて相談しているSEの方がいてその人に相談した時に「こうやってごらん」と教わりました。
実務作業をしている方からしたら常識レベルかもしれませんが、エラー対処の経験が少ない私は「コード内のエラーを探そう」が先に来てしまうので、目からウロコでした。
原因の特定
フォーム毎の検証の結果、すべてのフォームを入力した時にエラーが発生することが分かりました。
そこからフォームのデータチェックをクリアした後のコードに絞り込んでコードを見直した所、create_userエンドポインのredirect
URLが間違っていました。
コード修正・動作テスト
URLのコードを修正した後、動作テストを行い問題なくユーザー登録ができました。
まとめ
今回は、CRUD機能のエラー対処についてでした。
エラー内容自体は打ち間違いと単純な内容でしたが、状況によって原因特定の方法にも色々な手段があることを知れたのが大きな収穫でした。
今回は、3章の認証機能を作るで躓いたポイントです。
エラーは時間も掛からず、解決しましたが原因を特定する方法が印象的でした。