【发布时间】:2010-01-17 03:56:01
【问题描述】:
情况是这样的。我有一个安装了两个应用程序的 django 项目。如果两个应用程序相互独立安装,它们似乎可以正常运行。
但是,如果我在 settings.INSTALLED_APPS 中列出这两个应用程序,则 reverse() 函数似乎会在第一个应用程序中中断 url。所以这让我相信第二个应用程序中的错误导致了问题。
如果我只是从 settings.INSTALLED_APPS 中删除 app_2,app_1 的 url reverse() 将再次开始工作。所以问题变成了当我将 app_2 添加到 settings.INSTALLED_APPS 时发生了什么“魔术”?我应该在 app_2 的哪里查找导致此问题的代码?
更新:
我已经稍微缩小了问题的范围,但它变得更奇怪了。 app_2 有一个 admin.py 文件,它定义了一些自定义管理视图。在该文件中有一行调用 reverse:reverse('init_script_view', args=['id_content'])
只要该行在 admin.py 文件中,所有对 reverse() 的调用都会失败并出现 NoReverseMatch 异常。如果我删除该行,一切似乎都正常。
【问题讨论】:
-
你说
reverse“休息”是什么意思?它是否返回不正确的值?是否引发异常?如果是这样,引发了什么异常,当它发生时你传递了什么参数?您是否在对reverse的所有呼叫或仅部分呼叫中遇到问题?如果只有一个子集,您将如何定义该子集? -
它返回了一个NoReverseMatch异常,似乎所有的reverse调用都受到了影响。