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

Django登录功能测试失败求助:NoReverseMatch及表单路径错误

Django登录功能测试失败问题排查与修复

你遇到的两个核心问题:NoReverseMatch反向解析错误,以及表单路径匹配断言失败,都是代码细节没对齐测试要求导致的,下面是具体修复步骤:

一、解决NoReverseMatch错误

你的登录URL已经注册在accounts命名空间下(app_name = "accounts"),但测试代码里直接用reverse("login"),没有指定命名空间,Django找不到对应的URL。需要修改测试代码中所有调用reverse("login")的地方,改为reverse("accounts:login")。

修改后的测试代码(涉及3个测试方法):

# test_login_resolves_to_accounts_login方法
def test_login_resolves_to_accounts_login(self):
    path = reverse("accounts:login")  # 此处修改
    self.assertEqual(
        path,
        "/accounts/login/",
        msg="Could not resolve path name 'login' to '/accounts/login/",
    )

# test_login_works方法
def test_login_works(self):
    User.objects.create_user("noor", password="1234abcd.")
    response = self.client.post(
        reverse("accounts:login"),  # 此处修改
        {"username": "noor", "password": "1234abcd."},
    )
    self.assertEqual(
        response.status_code,
        302,
        msg="Login does not seem to work",
    )

# test_login_fails_for_unknown_user方法
def test_login_fails_for_unknown_user(self):
    response = self.client.post(
        reverse("accounts:login"),  # 此处修改
        {"username": "noor", "password": "1234abcd."},
    )
    self.assertEqual(
        response.status_code,
        200,
        msg="Login does not seem to work",
    )

二、解决表单路径匹配失败问题

测试期望表单位于html > body > main > div > form路径下,但你的HTML里<form>和<div>是同级(都在<main>下),需要把<form>移动到<div>内部。

修改后的accounts/templates/accounts/login.html:

<!DOCTYPE html>
<html>
  <head>
    <title>Login</title>
  </head>
  <body>
    <main>
      <div>
        <h1>Login</h1>
        <!-- 将form移入div内部 -->
        <form method="post">
          {% csrf_token %} {{ form }}
          <button type="submit">Login</button>
        </form>
      </div>
    </main>
  </body>
</html>

完成以上两处修改后,重新运行python manage.py test tests.test_feature_07,所有测试应该就能通过了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:23:12