簡體   English   中英

為什么我的 Django root url-conf 找不到我的應用程序模塊?

[英]Why can't my Django root url-conf find my app module?

我想知道是否有人可以幫助我。 我希望重組一個新的 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 中遺漏了什么,請有人告訴我嗎?

settings.pyINSTALLED_APPS中添加app1

您在不添加__init__.py的情況下向您的應用程序添加了一些子目錄 ( project_root )。 Django 找不到您的app1路徑。

嘗試在settings.py中將subdirectory注冊到您的 Django 路徑

import sys
sys.path.append(os.path.join(BASE_DIR, 'project_root'))

建議:不要在 Django 模塊/目錄中使用空格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM