python - 为什么我的 Django root url-conf 找不到我的应用程序模块?
问题描述
我想知道是否有人可以帮助我。我正在寻找重组一个新的 django 项目,以代表以下内容:
-repository/
-config/
-asgi.py
-settings.py
-urls.py
-wsgi.py
-__init__.py
-project root/
-app_1/
-admin.py
-apps.py
-models.py
-tests.py
-urls.py
-views.py
-__init__.py
-app_2/
-...
-app_3/
-...
-migrations/
-__init__.py
-static/
-templates/
-docs/
-manage.py
到目前为止,我已经尝试通过将以下行附加到 settings.py 文件来实现这一点:
# This is the <repository root>
BASE_DIR = Path(__file__).resolve().parent.parent
# This is the <project repository>
PROJECT_ROOT = BASE_DIR / 'project'
MEDIA_ROOT = PROJECT_ROOT / 'media'
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.0/howto/static-files/
STATIC_ROOT = PROJECT_ROOT / 'static_root'
STATIC_URL = PROJECT_ROOT / 'static'
ROOT_URLCONF = 'config.urls'
Templates = [{ ...
'DIRS': [PROJECT_ROOT / 'templates'],
... }]
在已安装的应用程序中,我必须指定“.app1”而不是传统上的“app1”。我修改了 manage.py、wsgi.py、asgi.py 文件等指向设置文件。
然而...
当我尝试使用以下命令在配置根 urlconf 中包含()特定于应用程序的 urlconf 时:
from django.contrib import admin
from django.urls import path, include
import project.app1
urlpatterns = [
path('admin/', admin.site.urls),
path('app1/', include('app1.urls', namespace='app1'))
]
它说
“ModuleNotFoundError:没有名为‘app1’的模块”
如果我错过了这个重组中的一个步骤和/或我是否在 url conf 中遗漏了一些东西,请有人告诉我?
解决方案
您将一些子目录 ( project_root
) 添加到您的应用程序而不添加__init__.py
。Django 找不到你的app1
路径。
尝试注册subdirectory
到您的 Django 路径settings.py
import sys
sys.path.append(os.path.join(BASE_DIR, 'project_root'))
建议:不要在 Django 模块/目录中使用空格
推荐阅读
- swift - 在 AVAudioPlayer 声音播放期间更改 UIButton 颜色
- html - 如何让 div 像 imgs 一样响应屏幕大小调整?
- linux - awk 在循环中使用时不打印任何内容
- python - 用户创建 - 电子邮件字段和图像字段不更新 Postgres
- java - 找不到 Jsoup .text 方法
- html - 如何使用 XML + AJAX + FLASK + HTML 动态更新网站?
- javascript - 来自json数据的knockout.js chekbox绑定
- python - 为 nfl 钱线刮掉赔率
- javascript - React - 服务器中的更改值不会立即反映在 DOM 中
- android - 如何在 Android Studio 4.0 + 中不包含工厂方法的情况下创建空白片段?