You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django登录模板传递‘Invalid credentials’消息失败问题求助

在Django中给登录模板传递错误消息的解决方案

我来帮你搞定这个问题!你现在遇到的是Django messages框架没在模板里正确显示的问题,咱们一步步来排查修复:

1. 先修复views.py里的小错误

你代码里的reverse(login)是个关键小问题——reverse()函数需要传入URL名称的字符串,不是变量名。修改后的代码如下:

from django.contrib import messages 
from django.http import HttpResponseRedirect 
from django.core.urlresolvers import reverse 

# 你的其他逻辑...
if access_token:
    # 处理成功逻辑
    pass
else:
    messages.error(request, "Wrong credentials")
    # 这里要给reverse传字符串形式的URL名称
    return HttpResponseRedirect(reverse('login'))

2. 在login.html中正确渲染messages

你模板里的{% if m...没写完,这才是消息不显示的核心原因。要在模板里完整遍历messages并渲染,比如在登录表单上方添加这段代码:

{% if messages %}
    {% for message in messages %}
        <div class="alert alert-{{ message.tags }}">
            {{ message }}
        </div>
    {% endfor %}
{% endif %}

# 下面是你的登录表单代码
<form method="post">
    <!-- 表单内容 -->
</form>
  • message.tags会自动对应你在views里用的error/warning等类型,方便你用CSS给不同类型的消息加样式(比如错误用红色背景)。

3. 额外检查项(确保messages框架正常工作)

  • 确认你的settings.py里已经启用了必要的中间件:
    MIDDLEWARE = [
        # 其他中间件...
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
    ]
    
    messages框架依赖Session中间件,所以这两个必须都在列表里。
  • 确认settings.py里的INSTALLED_APPS包含django.contrib.messages(默认是有的,但保险起见检查下)。

这样修改后,当用户输入无效凭据时,错误消息就会正确显示在登录页面啦!

内容的提问来源于stack exchange,提问作者user9160918

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:28:51