Skip to main content
 首页 » 编程设计

python之CSRF token 丢失或 Django 无效

2025年05月04日39qlqwjy

我以前遇到过这个问题并解决了它,但这完全是随机弹出的(或者看起来是这样)。离开 Django 项目一段时间后,我刚刚回到我的 Django 项目...登录时,我忘记了我的网络用户名,它给了我相应的错误消息 Sorry, that's not a valid username or password。所以为了解决这个问题,我创建了一个新的 super 用户(因为我也忘记了我的管理员用户名)所以我可以检查我的网络用户名是什么。我成功地做到了这一点,但是现在当我尝试登录时出现 CSRF 错误(无论用户名或密码是否正确)。我不知道这是怎么发生的,因为它在 10 秒前已正确验证并且我没有更改任何一行代码。

{% extends "base.html" %} 
 
{% block content %} 
 
    <title>{% block title %} | Login{% endblock %}</title> 
 
    <h2>Login</h2> 
 
    {% if form.errors %} 
        <p class="error">Sorry, thats not a valid username or password</p> 
    {% endif %} 
 
    <form action="/accounts/auth/" method="POST">{% csrf_token %} 
        <label for="username">Username: </label> 
        <br> 
        <input type="text" name="username" value="" id="username"> 
        <br><br> 
        <label for="password">Password: </label> 
        <br> 
        <input type="password" name="password" value="" id="password"> 
        <br><br> 
        <input type="submit" value="Login"> 
    </form> 
 
{% endblock content %}  

请您参考如下方法:

出于安全考虑,CSRF token 会在您登录时更改(“轮换”)。如果您在选项卡 A 中打开一个页面,然后在选项卡 B 中登录,然后尝试在选项卡 A 中提交表单,您将收到 CSRF 错误,因为选项卡 A 中的 CSRF token 已过期。

当您刷新选项卡 A 时,将加载新的 CSRF token ,错误将停止。