突然所有HttpResponseRedirect(reverse())都出现语法错误

时间:2012-04-11 17:41:37

标签: python django

这个让我挠头。我有一个应用程序,其视图确实形成处理(登录/注册),然后根据输入返回各种HttpResponseRedirect()。所有这些重定向都包含reverse()个查找,其中相应的函数列为字符串。并且每个函数在urls.py中都有相应的urlpattern

直到今天早上一切正常。

现在,每当我提交表单时,Django都会为不存​​在的行提供语法错误:

SyntaxError at /logout/
invalid syntax (views.py, line 399)

(该文件只有354行)

当我向下滚动以查看回溯时,突出显示的行始终是return HttpResponseRedirect( reverse('app.views.func') )的行。

由于这些令人困惑的错误消息,我甚至不确定HttpResponseRedirect( reverse() )的问题是否真的存在。我几天之内没有触及任何代码,所以我不确定为什么会突然开始抛出这样的奇怪错误。

任何帮助调试此功能都将非常感谢!

1 个答案:

答案 0 :(得分:3)

我终于在consulting the docs for the reverse()函数之后找到了它。

当您调用reverse()时,django首先导入项目的URLConf文件,然后导入URLconf中声明的每个视图模块。我的问题是我正在研究一种新的,完全不相关的视图,它有语法错误(在第399行!)。

因此,即使我没有查看使用新视图执行任何操作的页面,但由于reverse()的工作原理,我的旧视图仍然因语法错误而被绊倒。

来自the docs

  

确保您的观点都正确无误。作为计算哪个URL的一部分   名称映射到哪些模式,reverse()函数必须全部导入   您的URLconf文件并检查每个视图的名称。这涉及到   导入每个视图功能。如果导入时有任何错误   你的任何视图函数都会导致reverse()引发错误,   即使该视图功能不是您要反转的功能。

     

确保您在URLconf文件中引用的任何视图都存在   可以正确导入。不要包含引用视图的行   你还没有写,因为这些观点是不可导入的。

相关问题