Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调试Django NoReverseMatch错误?_Django_Google App Engine - Fatal编程技术网

如何调试Django NoReverseMatch错误?

如何调试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反转使用查

各位,我收到一个特定url调用的NoReverseMatch错误

我想知道:一般来说,有什么好的工具来调试这些吗?例如,列出哪些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>