将【Django】项目结构划分为「设置」「用户管理」和「应用程序」这三部分

首先

为了使Django项目的结构更清晰,许多人都提出了最佳实践并公开分享。由于我需要在所属的研究室内接手项目,所以我一直在努力寻找能够清楚地了解“每个功能在哪里运行”的方法……
在本文中,我将根据自己的思考,介绍和提出一种我认为不错的Django项目结构。

得出结论

我会将Django项目的结构分为”配置”、”用户管理”和”其他应用程序”三部分。这样做可以方便管理。
“配置”文件夹的目录名称为_config是特殊的,但是这个目录名称使得配置文件夹始终显示在最上面,省去了搜索的麻烦。(这只是我的一个想法,并不是通用的命名方式)

.
├── _config  # 設定
├── account   # ユーザ管理
└── apps     # その他アプリケーション群
    ├── app1
    ├── app2
    └── app3

实施步骤

我将为考虑采用此项目结构的读者提供实施步骤。

环境

macOS Catalina 10.15.7
Python 版本:3.8.5
Django 版本:3.2.8

创建一个名为”_config”的目录

由于Django项目的开发进度可能会有所不同,因此请对每个进度分别指定相应的步骤。

如果要从头开始开发Django项目的话

$ mkdir <projectName>
$ cd <projectName>
$ django-admin.py startproject _config .

如果要在正在開發中的Django項目中反映這一點

.
└── <settingDirName> → _config # ディレクトリ名を変更
- os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<settingDirName>.settings')
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', '_config.settings')
- ROOT_URLCONF = '<settingDirName>.urls'
+ ROOT_URLCONF = '_config.urls'
- WSGI_APPLICATION = '<settingDirName>.wsgi.application'
+ WSGI_APPLICATION = '_config.wsgi.application'
- os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<settingDirName>.settings')
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', '_config.settings')
- os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<settingDirName>.settings')
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', '_config.settings')

创建一个名为“account”的用户管理目录。

在本篇文章中,只是展示了“项目结构的实现方法”。如果您想创建自定义用户,请先创建用户管理目录,然后阅读这篇文章,因为它非常易懂。事实上,如果只创建了项目结构而没有创建自定义用户,意义并不大,所以推荐您参考上述文章,确保创建自定义用户。

$ mkdir account
$ python manage.py startapp account
INSTALLED_APPS = [
    ...
+   'account.apps.AccountConfig',
    ...
]

+ AUTH_USER_MODEL = 'account.User'

在「apps」目录下创建一个应用程序。

這裡展示了在「apps」目錄中創建「example」應用程序的例子。
首先,創建example目錄,然後執行startapp指令。
在這裡,需要注意startapp指令。通常情況下,我認為人們會使用python manage.py startapp <應用程序名稱>這樣的指令,但是如果要在Django項目的根目錄下的更深層目錄中創建應用程序,則需要執行以下指令。

$ mkdir apps
$ mkdir apps/example
$ python manage.py startapp example apps/example

接下来,只需完成应用程序的注册。

from django.apps import AppConfig

class ExampleConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'apps.example' #先頭にapps(アプリケーション群が入ったディレクトリの名前)をつける
INSTALLED_APPS = [
    ...
+   'apps.example.apps.ExampleConfig',
    ...
]

实施结果

使用上述的步骤,可以创建出这样的Django项目结构。

.
├── _config  # 設定
├── account   # ユーザ管理
└── apps     # その他アプリケーション群
    └── example # 今回作成したアプリケーション

总结

在本文中,我介绍和提议了我对Django项目结构的构建方式。作为我的提议的补充,我们也可以在apps目录中创建进一步分类应用的目录。(但是项目结构不应过于深,否则会变得难以理解,需要取得平衡)

我认为,Django项目的最佳实践不仅仅体现在本文所述的”项目结构”上,还在视图、模型、模板等各个方面展现出来,使之成为”易于理解和易于继承”的特点。

我希望大家在开发和实施中,能共享自己觉得”这种方法可能很方便!”的经验。(我很感兴趣w)

本文至此结束。非常感谢!

我們期待收到您的意見、疑問或其他任何反饋!

在以下的情况下,请对以下内容进行本地化的概述:

【Django】创建易于理解和查找的配置目录
在Django中,似乎应该创建定制的用户
【Django】目录结构实践 + 注意事项
尝试在INSTALLED_APPS中设置AppConfig的子类

广告
将在 10 秒后关闭
bannerAds