Djangoのログアウトが利かない?
認識が間違っているかもしれないが、これまで正常に動いていたはずのログアウト機能が利かなくなって、Pythonの再インストールから再開発まで行ったものの、改善されなかった。
だからメモ…
間違っているかもしれないが、とりあえずこれで改善をした。
元々のコードhtml
<li class="nav-item">
<a class="nav-link" href="{% url 'logout' %}">ログアウト</a>
</li>
再構成したコード
<li class="nav-item">
<form action="{% url 'logout' %}" method="post">
{% csrf_token %}
<a class="nav-link" href="#" onclick="this.closest('form').submit();return false;">ログアウト</a>
</form>
</li>
Djangoのログアウト機能がうまく動作しない原因は、ログアウトリクエストがGETメソッドで送信されている事が原因?
DjangoのログアウトビューはPOSTメソッドを期待している?
そのため、GETメソッドでリクエストを送ると405(Method Not Allowed)エラーが発生。
ログアウトリンクを修正するには、リンクをクリックするとPOSTリクエストを送信するようにする。
これは、HTMLのform要素とJavaScriptを使用したパターンですが、始めっからログアウトできていなかったのかな?
他のDjangoも全滅でログアウトができないので、とりあえずは応急処置でこのパターンを採用。
もうちっと簡単な方法はないかいのぅ…。