簡體   English   中英

為什么注銷作為 GET 請求而不是 POST 請求工作?

[英]Why is Logout working as a GET Request and not a POST Request?

這是 html 文件

<a class="nav-link" href="{% url 'logout' %}">Logout</a>
<form action="{% url 'logout' %}" method="POST" id ="logout">
 {% csrf_token %}
<input type ="hidden">
 </form> 

view.py 中的這段代碼。

def logout(request):
    if request.method == 'POST':
        print("post-request")
        auth.logout(request)
        return redirect('index')
    else:
        print(request.method)
        auth.logout(request)
        return redirect ('index')

為什么注銷是 GET 請求而不是 POST 請求? 我根據文檔對項目進行了一些更改,無法理解為什么您可以通過 GET 請求成功注銷。 https://docs.djangoproject.com/en/3.0/topics/auth/default/

您的注銷位於具有鏈接的<a>標記中,該鏈接發送 GET 請求,而注銷表單位於該<a>標記之外。 並且您當前正在使用您的鏈接,因此表單不用於注銷。

你可能需要這樣的東西:

<form action="{% url 'logout' %}" method="POST" id ="logout" class="nav-link">
    {% csrf_token %}
    <input type="submit" value="Logout">
</form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM