【问题标题】:Django 1.9 can not find newappDjango 1.9 找不到新应用
【发布时间】:2016-09-11 04:30:48
【问题描述】:

我使用过 django 1.7,最近使用 django 1.9 开始了新项目。启动新应用的主要区别在于,新应用是使用 apps.py 文件创建的。我在django docs 上读到,现在你必须使用

INSTALLED_APPS = [
    'newapp.apps.NewAppConfig',
    ...
]

(旧的只是'newapp'

在我的新项目中,我将所有应用程序都放在一个名为“myapps”的新目录中。 但如果我使用 'myapps.newapp.apps.NewAppConfig' 比 django 给出错误ImportError: No module named newapp 但如果我使用旧方式,即

INSTALLED_APPS = [
    'myapps.newapp',
    ...
]

它可以完美无误地工作,但可能无法应用 apps.py 文件中的配置(我不知道它是如何工作的)。

那么,当您将所有新应用程序放在另一个目录(如“myapps”)中且 apps.py 配置文件也可以工作时,将 newapp 放入 django 1.9 的 INSTALLED_APPS 设置中的正确方法是什么?

【问题讨论】:

  • 您不必“必须”使用它。旧方法'myapps.newapp' 同样有效。如果您需要在apps.py 中运行内容,请仅使用较长的版本@
  • @C14L 是的,我知道您不必这样做,但这是我的问题,如果我将来需要使用 apps.py 并且由于我的目录而无法使用该功能怎么办结构。
  • 您的newapp 目录是否包含__init__.py
  • @BurhanKhalid 是的 newapp 确实有 init.py 并且包含在主 url 目录中的 url 也可以正常工作

标签: python django django-1.9


【解决方案1】:

如果您的应用程序目录位于myapps 目录中,请检查以下内容:

  1. 您的myapps 目录应该有一个__init__.py

  2. INSTALLED_APPS中包含应用程序时,在路径中包含myapps,即'myapps.newapp.apps.NewAppConfig',

  3. 在应用配置的name 属性中包含myapps

    class NewAppConfig(AppConfig):
        name = 'myapps.newapp'
    

【讨论】:

  • 谢谢伙计。我错过了第三点......我在apps.py中有name ='newapp',这导致了所有问题。
【解决方案2】:

如果您的应用位于“myapps”目录中,您仍需要将其包含在路径中:"myapps.newapp.apps.NewAppConfig"

【讨论】:

  • 正如我在问题中使用“myapps.newapp.apps.NewAppConfig”给出的 ImportError: No module named newapp
猜你喜欢
  • 2016-04-04
  • 2016-06-01
  • 2016-07-16
  • 2016-04-13
  • 2012-06-15
  • 2020-04-07
  • 2016-07-20
  • 2016-05-30
  • 1970-01-01
相关资源
最近更新 更多