1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Djangoでログアウト機能を実装できない場合のエラー解消法

Posted at

発生していた問題・エラー

ログアウトをしようとした時に、HTTP 405エラー「Method Not Allowed」(許可されていないメソッド)が発生している

ログアウト機能失敗.gif

エラーの原因・解決方法

  • 多くの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>

無事、ログアウト機能が使えるようになりました。

ログアウト機能成功.gif

参考記事

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?