何が起こったか?
お勉強がてら作ったWebアプリにログインログアウト機能を作ろうと思って、とりま、paizaラーニング様の言う通り、settings.pyやらurls.pyやら修正したり、追加したりしていました。
login.htmlとlogged_out.htmlも作成し、テスト!
rogin.htmlはさっくり表示され、いいねぇ^^と喜んでいました。
そして、ログアウト!
・・・・・
「このページは機能していません 405エラー」
なんかあっさりした日本語のエラーが表示されました。
エラーが出るときって、なんか色々小難しい英語でまくしたてられるのに。
ログインはうまくいくのにログアウトできないって
- ルーティングがうまくいってない?
- settings.pyがダメなん?
- ひょっとしてlogged_out.htmlに記述ミスが?
- ページのログアウトのリンクがNG?
- まさかのdjango.contrib.auth.urlsやviewsあたりにバグが!?(ぉぃw)
気になりだしたら先に進めなくなってしまい、1つづつ○○.pyやらXX.htmlやらを確認していきました。
時間はかかるし、一旦あきらめようと思いつつ、やっぱり気になり、また見直すという繰り返し。
そして・・・
ターミナルを見た💦
Method Not Allowed (GET): /accounts/logout/
Method Not Allowed: /accounts/logout/
[21/Dec/2023 21:11:19] "GET /accounts/logout/ HTTP/1.1" 405 0
っていっぱい出てた。
これって、え、まさかのGETダメなやつ!?
そして、ググった。
LogoutViewはGETメソッド廃止されてるんだって。
えーーーーー・・・。
Logoutのリンクの部分をこんな風にしたら、あっさり解決しました。
<form action="{% url 'logout' %}" method="post" name="f_logout">
{% csrf_token %}
<input type="hidden" value="logout">
<a href="javascript:f_logout.submit()" class="logout nav-link">Logout</a>
</form>
マジ、解決してよかった><
何も手がつかなくなるところだった。
そして、色々反省した。