+-
我将Django应用添加到INSTALLED_APPS会发生什么?
这是情况.我有一个已安装两个应用程序的 django项目.如果两个应用程序彼此独立安装,则它们似乎可以正常运行.

但是,如果我在settings.INSTALLED_APPS中列出了两个应用程序,则reverse()函数似乎对于第一个应用程序中的URL中断.因此,这使我相信第二个应用程序中的错误导致了问题.

如果我只是从设置中删除app_2.INSTALLED_APPS,则app_1的url reverse()将再次开始工作.因此,当我将app_2添加到设置中时,问题就变成了什么“魔术”.INSTALLED_APPS?我应该在app_2中哪里寻找导致此问题的代码?

更新:

我已经将问题缩小了一点,但是变得陌生了. app_2具有一个admin.py文件,该文件定义了一些自定义管理员视图.在该文件中,有一行调用反向:
反向(‘init_script_view’,args = [‘id_content’])

只要该行在admin.py文件中,所有对reverse()的调用都会失败,并出现NoReverseMatch异常.如果我删除该行,一切似乎都可以正常工作.

最佳答案
将应用程序添加到INSTALLED_APPS时,没有什么特别的事情发生,但是影响您的主要因素是,在调用reverse()时会检查其视图.

反向工作的方法是导入项目中的所有视图,并查看哪些视图与您提供的URL名称匹配.但是,它非常脆弱,如果任何视图由于某种原因导致错误或无法导入,则反向调用将失败.

仅在包含app2后它才会失败,这表明app2中某处的视图存在问题.尝试从shell分别导入它们,然后看看会遇到什么错误.

更新后进行编辑感谢您提供额外的详细信息.我以前在自己的代码中已经看到过这一点.可能是因为管理文件是在处理urlconf之前导入的,所以这种反向操作会产生错误.尝试将admin.autodiscover()行向下移动到urls.py的最底部,以便它是该文件中的最后一行.

点击查看更多相关文章

转载注明原文:我将Django应用添加到INSTALLED_APPS会发生什么? - 乐贴网