更大的 Django 项目,具有多层子文件夹和 20 个应用程序

问题描述 投票:0回答:1

我正在开发一个更大的 Django 项目,该项目需要多个级别的子文件夹,例如应用程序所在的

applications/examples/example_1

将此应用程序添加到

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'home_app.apps.HomeAppConfig',
    'applications.examples.example_1.apps.Example1Config',
]

home_app
效果很好,但是
example_1
给这个

错误:

django.core.exceptions.ImproperlyConfigured: Cannot import 'example_1'. Check that 'applications.examples.example_1.apps.Example1Config.name' is correct.

我的

app.py
example_1
是这样的:

from django.apps import AppConfig
class Example1Config(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'example_1'

项目结构:

C:.
│   db.sqlite3
│   manage.py
│
├───applications
│   ├───examples
│       ├───example_1
│           │   admin.py
│           │   apps.py
│           │   models.py
│           │   tests.py
│           │   views.py
│           │   __init__.py
│           │
│           ├───migrations
│           │       __init__.py
│           │
│           └───__pycache__
│                   apps.cpython-311.pyc
│                   __init__.cpython-311.pyc
│
├───home_app
│   │   admin.py
│   │   apps.py
│   │   models.py
│   │   tests.py
│   │   urls.py
│   │   views.py
│   │   __init__.py
│   │
│   ├───migrations
│   │   │   __init__.py
│   │   │
│   │   └───__pycache__
│   │           __init__.cpython-311.pyc
│   │
│   ├───static
│   │       background_img.jpg
│   │
│   ├───templates
│   │   └───home_app
│   │           about.html
│   │           base.html
│   │           home.html
│   │
│   └───__pycache__
│           admin.cpython-311.pyc
│           apps.cpython-311.pyc
│           models.cpython-311.pyc
│           urls.cpython-311.pyc
│           views.cpython-311.pyc
│           __init__.cpython-311.pyc
│
└───Project
        asgi.py
        settings.py
        urls.py
        wsgi.py
        __init__.py
python django django-settings django-apps
1个回答
0
投票

代码有两个问题:

  1. 正如 @Jimmy Pells 评论的那样,需要将
    __init__.py
    添加到树的每个级别:
    applications/__init__.py
    applications/examples/__init__.py
    不仅仅在应用程序级别。

    应用级别中的
  1. apps.py
    应该是:
from django.apps import AppConfig
class Example1Config(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'applications.examples.example_1'

不只是:

from django.apps import AppConfig
class Example1Config(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'example_1'
© www.soinside.com 2019 - 2024. All rights reserved.