Python 现代开发学习笔记

(三)项目、应用与管理入口

1. 先按工作分出目录

reading_site 保存整个站点的配置与总路由;library 保存阅读功能的模型、视图、模板、后台和管理命令。Django 把前者称为项目配置包,把后者称为应用。一个站点可以组合多个应用。

文件或目录 本章负责的任务
manage.py、reading_site/cli.py 进入当前项目的管理命令
reading_site/settings.py 应用、中间件、模板、数据库与静态文件配置
reading_site/urls.py 站点总路由
library/models.py、migrations/ 当前模型与表结构变化记录
library/forms.py、views.py、urls.py 表单、页面动作和阅读路由
library/admin.py 后台列表、编辑与权限
library/templates/、static/ 页面及样式
library/management/commands/ 导入书目的命令
# 项目文件:reading_project/manage.py
from reading_site.cli import main

if __name__ == "__main__":
    main()  # 与安装后的 reading-site 命令使用同一个入口。
# 项目文件:reading_project/src/reading_site/cli.py
import os

from django.core.management import execute_from_command_line


def main():
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "reading_site.settings")
    execute_from_command_line()  # 继续解释 migrate、runserver、test 等子命令。

DJANGO_SETTINGS_MODULE 指定配置模块。execute_from_command_line 再解释 migrate、runserver、test 等子命令,初始化项目并调用对应管理功能。安装后的 reading-site 命令也进入这个函数。

# 项目文件:reading_project/src/library/apps.py
# 用 AppConfig 注册 library 应用,模型和管理命令由 Django 按此名称发现。
from django.apps import AppConfig


class LibraryConfig(AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "library"
    verbose_name = "阅读记录"

AppConfig 提供应用名称和显示信息,稍后登记到 INSTALLED_APPS。如果要自己生成空骨架,可以在相邻的练习目录运行:

# 从 reading_project 目录建立一份独立的练习骨架。
mkdir ../django_start
uv run python -m django startproject sketch_site ../django_start
# 进入新目录,仍使用配套项目的 Python 解释器生成应用。
cd ../django_start
../reading_project/.venv/Scripts/python.exe manage.py startapp library

骨架会生成起始文件,配套阅读站已经把这些文件扩展为完整功能。目录生成过程可对照 Django 入门项目。

笔记正文与全部题解 · Ctrl / ⌘ K