LoginSignup
5
3

DjangoのカンタンLogout機能で2日間さまよった話

Posted at

何が起こったか?

お勉強がてら作った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>
                    

マジ、解決してよかった><
何も手がつかなくなるところだった。
そして、色々反省した。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3