突然之间,所有的 HttpResponseRedirect( reverse() ) 都给出了语法错误



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

直到今天早上,一切都很顺利。

现在,每当我提交表单时,Django 都会给我一个不存在的行的语法错误:

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

(该文件只有 354 行)

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

由于这些令人眼花缭乱的错误消息,我什至不确定问题是否真的出在HttpResponseRedirect( reverse() )上。我已经几天没有接触任何代码了,所以我不确定为什么它会突然开始抛出这样的奇怪错误。

任何帮助调试将不胜感激!

在查阅了reverse()函数的文档后,我终于想通了。

当你调用 reverse() 时,django 首先导入项目的 URLConf 文件,而 URLConf 文件又导入在 URLconf 中声明的每个视图模块。我的问题是我正在处理一个新的、完全不相关的视图,该视图有语法错误(在第 399 行!

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

从文档中:

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

确保您在 URLconf 文件中引用的任何视图都存在,并且 可以正确导入。不要包含参照视图的线 您尚未编写,因为这些视图将无法导入。

最新更新