如何调试Django NoReverseMatch错误?
各位,我收到一个特定url调用的NoReverseMatch错误 我想知道:一般来说,有什么好的工具来调试这些吗?例如,列出哪些URL已注册的方法 我的特别例子是: 模板:如何调试Django NoReverseMatch错误?,django,google-app-engine,Django,Google App Engine,各位,我收到一个特定url调用的NoReverseMatch错误 我想知道:一般来说,有什么好的工具来调试这些吗?例如,列出哪些URL已注册的方法 我的特别例子是: 模板: <a href= "{% url django.contrib.auth.views.redirect_to_login blarg %}">log in</a> 我将Google App Engine与appenginepatch一起使用,因此Django本身被修改。在这种情况下,url反转使用查
<a href=
"{% url django.contrib.auth.views.redirect_to_login blarg %}">log in</a>
我将Google App Engine与appenginepatch一起使用,因此Django本身被修改。在这种情况下,url反转使用查看函数的完整路径,简单的做法就是查看查看函数。在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)))
此函数甚至不接受请求对象,因此它实际上甚至不是一个正确的视图,而且它甚至没有在django/contrib/auth/url.py
中注册。这意味着它可能只在其他视图中用作辅助函数
在任何情况下,根据您的特定示例,您可能希望使用普通的旧登录url,如下所示:
<a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">
log in
</a>
另外,我相信如果您在设置中设置
TEMPLATE\u DEBUG=True
,您将得到一个列表,列出django在抛出错误之前检查过的所有url模式。谢谢!描述得很好。这就是我最后做的,用auth.REDIRECT\u FIELD\u NAME代替“next”。但是,模板_DEBUG=True没有显示关于URL模式的任何进一步信息,因此我将这个问题留待讨论。由于我在应用引擎补丁中使用Google App Engine,Django的补丁非常多,所以我想看到实际注册的URL模式,而不仅仅是猜测。我知道我也看到了Google App Engine中运行的调试页面,但我只是使用内置的Django,而不是应用引擎补丁。是的,如果将DEBUG=True设置为True,则有时会看到该模式表,有时则不会看到。现在我忘记了为什么它不总是出现。
<a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">
log in
</a>