无法使用Django app

时间:2015-04-23 14:31:34

标签: django django-apps django-1.8

我有一个名为 test1 的全新Django 1.8项目。我提供了一个名为 smartmetadata 的应用程序,我想使用它。我已将其复制到 test1 / test1 / apps / smartmetadata 上,并且我已将url(r'^smartmetadata/', include('smartmetadata.urls'), name='smartmetadata'),包含在 test1 / urls.py 文件中。

INSTALLED_APPS作为smartmetadata加入ImportError: No module named smartmetadata时,我得到test1.apps.smartmetadata。但是,如果我将其包含为from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ # Examples: # url(r'^$', 'test1.views.home', name='home'), # url(r'^blog/', include('blog.urls')), url(r'^admin/', include(admin.site.urls)), url(r'^smartmetadata/', include('smartmetadata.urls'), name='smartmetadata'), ] ,则会正确加载。我在Mayan之类的其他项目中看到,只使用自己的标签而不是完整路径包含应用程序。我怎样才能做到这一点?

修改:我的完整 urls.py 文件内容:

.
├── db.sqlite3
├── manage.py
├── run.sh
└── test1
    ├── apps
    │   ├── __init__.py
    │   ├── __init__.pyc
    │   └── smartmetadata
    │       ├── admin.py
    │       ├── forms.py
    │       ├── __init__.py
    │       ├── __init__.pyc
    │       ├── models.py
    │       ├── models.pyc
    │       ├── tests.py
    │       ├── utils.py
    │       └── views.py
    ├── __init__.py
    ├── __init__.pyc
    ├── settings.py
    ├── settings.pyc
    ├── urls.py
    ├── wsgi.py
    └── wsgi.pyc

我的完整项目树:

vertical-align:top

1 个答案:

答案 0 :(得分:5)

您需要将apps文件夹添加到PYTHON_PATH

settings.py是个好地方:

import os
import sys

# BASE_DIR should already be present in your settings.
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

APPS_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'apps')

sys.path.append(APPS_DIR)

顺便说一句,我建议将apps文件夹放在项目的根目录(即BASE_DIR)而不是“settings”文件夹中。