発生していた問題・エラー
ログアウトをしようとした時に、HTTP 405エラー「Method Not Allowed」(許可されていないメソッド)が発生している
エラーの原因・解決方法
- 多くのWebアプリケーションでは、ログアウトの操作はセキュリティ上の理由から、GETではなくPOSTリクエストを使用して行われるらしいです
- ログアウトを行う際には、フォームを使ってPOSTメソッドでリクエストを送信するようにリンクを変更する必要があります
layout.html
<nav class="navbar navbar-expand-sm navbar-dark fixed-top">
<div class="container">
<a class="navbar-brand" href="{% url 'gourmet_guide:index' %}">おすすめご飯やさん</a>
<ul class="navbar-nav">
{% if user.is_authenticated %}
<li class="nav-time">
<span class="navbar-text">{{ user }} - </span>
</li>
<li class="nav-item">
{% comment %}
<a href='{% url "logout" %}' class="logout nav-link">Logout</a>
{% endcomment %}
<!-- POSTリクエストに変更 -->
<form method="POST" action="{% url 'logout' %}">
{% csrf_token %}
<button type="submit" class="logout nav-link btn btn-link" style="display:inline; padding: 0;">Logout</button>
</form>
</li>
{% else %}
<li class="nav-item">
<a href="{% url 'login' %}" class="login nav-link">Login</a>
</li>
{% endif %}
</ul>
</div>
</nav>
無事、ログアウト機能が使えるようになりました。
参考記事