gpt4 book ai didi

django - 如何调试 Django NoReverseMatch 错误?

转载 作者:太空宇宙 更新时间:2023-11-03 15:29:40 25 4
gpt4 key购买 nike

伙计们,我收到一个特定 url 调用的 NoReverseMatch 错误。

我想知道:一般情况下,有什么好的工具可以调试这些吗?例如,列出哪些 URL 已注册的方法?

我的具体例子:

模板:

<a href=
"{% url django.contrib.auth.views.redirect_to_login blarg %}">log in</a>

错误:

NoReverseMatch: Reverse for
'settings.django.contrib.auth.views.redirect_to_login'
with arguments '('[[ UNDEFINED VARIABLE ]]',)'
and keyword arguments '{}' not found.

我正在使用带有 appenginepatch 的 Google App Engine,所以 Django 本身被修改了。

最佳答案

在这种 url 反转使用 View 函数的完整路径的特殊情况下,简单的事情就是去查看 View 函数。在 Django-1.1 中,这看起来像:

def redirect_to_login(next, login_url=None,
redirect_field_name=REDIRECT_FIELD_NAME):
"Redirects the user to the login page, passing the given 'next' page"
if not login_url:
login_url = settings.LOGIN_URL
return HttpResponseRedirect('%s?%s=%s' % (login_url,
urlquote(redirect_field_name),
urlquote(next)))

这个函数甚至没有接受一个请求对象,所以它甚至不是一个合适的 View ,它甚至没有在 django/contrib/auth/urls.py 中注册。这意味着它可能仅用作其他 View 中的辅助函数。

无论如何,根据您的特定示例,您可能想要做的是像这样使用普通的旧登录 url:

<a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">
log in
</a>

此外,我相信如果您在设置中设置 TEMPLATE_DEBUG = True,您将获得 django 在抛出错误之前检查过的所有 url 模式的列表。

关于django - 如何调试 Django NoReverseMatch 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1579523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com