【发布时间】:2019-05-16 10:51:04
【问题描述】:
我有一个名为 reports 的 Django 项目,其中包含 report_1、report_2 等应用程序。
由于某些原因,我想将项目视为一个应用程序,所以我在report_1 和report_2 旁边添加了reports 到INSTALLED_APPS,并且还在views.py 文件中创建了templates 文件夹主项目文件夹(settings.py 所在的位置)。
在urls.py我添加了app_name = reports。
但是,只有当我跳过应用程序名称时,从模板中调用 url 才会起作用:所以{% url 'reports:index' %} 会抛出
'reports' 不是注册的命名空间'
错误,但{% url 'index' %} 会起作用。
为什么会这样?我以为 Django 会遍历 INSTALLED_APPS 中列出的所有应用程序,查找 app_name(已提供)并将其与 URL 名称匹配。
【问题讨论】:
-
I want to treat the project as an app请详细说明您的意图。 -
@IvanStarostin:我希望它有自己的视图、模板等
-
一种常见的方法是创建一个应用程序(例如
core,并将其用于项目的视图/模板/url,而不是将project添加到INSTALLED_APPS。如果你真的想添加项目目录到INSTALLED_APPS并使用命名空间,我在下面的答案中建议了一个解决方案。