【问题标题】:Django: urls.py giving No Reverse Match errorDjango:urls.py 给出无反向匹配错误
【发布时间】:2021-04-23 19:41:09
【问题描述】:

我安装了django-axes,它允许您设置一个 url,以便在 5 次登录失败时重定向到。我将这一行添加到 settings.pydocumentation:

AXES_LOCKOUT_URL = 'account-locked'

然后我将此行添加到 users/urls.py

path('account/locked/?username=<str>', user_views.account_locked, name='account-locked'),

当我在登录屏幕中输入 5 个错误的用户名/密码组合时,它会尝试重定向我,但我收到此错误:

NoReverseMatch at /login/
Reverse for 'account-locked?username=user2' not found. 'account-locked?username=user2' is not a valid view function or pattern name.

【问题讨论】:

    标签: django django-authentication lockout


    【解决方案1】:

    django-axes 设置 AXES_LOCKOUT_URL 可能需要路径 URL(不是路径名)

    那么您可以尝试更改AXES_LOCKOUT_URL,如下所示:

    AXES_LOCKOUT_URL = 'login/account/locked/'
    

    你的路径应该是这样的

    path('account/locked/', user_views.account_locked, name='account-locked'),
    

    【讨论】:

    • 感谢您的建议,我试过了,但出现 404 错误:Request URL: http://localhost:8000/login/account/locked/?username=user2
    • @Tom 啊,我明白了,出于某种原因,它期望使用“login/”前缀。您可以尝试将此设置更改为 AXES_LOCKOUT_URL = 'login/account/locked/'
    • 我仍然收到与 AXES_LOCKOUT_URL = 'login/account/locked/' 相同的 404 错误。会不会跟参数有关系?例如)Reverse for 'account-locked?username=user2' not found. 'account-locked?username=user2' is not a valid view function or pattern name.
    • @Tom,是的,我已经编辑了答案。不应将查询参数写入路径 URL,此语法旨在使用 URL 参数而不是查询参数。
    • 您发布的答案非常接近,但我必须在settings.py中设置AXES_LOCKOUT_URL = 'account/locked/',在urls.py中设置path('login/account/locked/', user_views.account_locked, name='account-locked'),。我会将您的答案标记为正确
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 2020-07-13
    • 2023-01-25
    • 2020-07-28
    相关资源
    最近更新 更多