Skip to main content

2.第一个 Django 项目理解项目结构与运行机制

在上一章中,你已经完成了所有准备工作: 安装了 Python,配置了虚拟环境,安装了 Django,并且明确了我们要构建的应用——学生成绩管理系统

现在,是时候写下第一行真正属于你的 Django 代码了。

在本章中,我们不会急着设计数据库,也不会讨论复杂的业务逻辑。我们的目标只有一个:

让 Django 项目成功跑起来,并理解它在做什么。

只要你能理解这一点,后面的内容都会顺理成章。


1.创建第一个 Django 项目

请先打开终端,进入你准备存放项目的目录,然后执行:

django-admin startproject config .

注意: 不要忘记最后的 "."。

如果一切顺利,你会看到一个名为 config 的目录被创建出来。 image-20251224142908205

指令解析

django-admin startproject 项目名称 项目路径: 这是 Django 的内置命令,用于创建一个标准的项目目录结构。

在很多教程中,你会看到例如"django-admin startproject studentsys"形式,那么生成的目录如下:

StudentManagement/
└── studentsys/ <-- 自动生成的父级目录
├── manage.py
└── studentsys/ <-- 实际的代码配置目录
├── __init__.py
├── settings.py
└── ...

studentsys是项目文件,但是外层还有一个我们前面创建的StudentManagement。“嵌套文件夹”的形式让目录结构显得很臃肿。

此外,studentsys目录下的同名的studentsys是配置文件,作为配置文件这个名字又很奇怪。

所以,我们使用了指令:“django-admin startproject config . ”

StudentManagement/         <-- 你当前的终端所在位置
├── manage.py <-- 直接生成在根目录
└── config/ <-- 实际的代码配置目录
├── __init__.py
├── settings.py
└── ...

使用上面的形式,路径更加简介,符合主流习惯,并且可以避免重名的困惑。

此刻,很多初学者会产生一种不安感: “这么多文件,我应该从哪里开始?”

别着急,我们一个一个来看。


2.Django 项目结构解析

进入项目目录,你会看到类似下面的结构:

StudentManagement/
├── manage.py
└── config/
├── __init__.py
├── settings.py
├── urls.py
├── asgi.py
└── wsgi.py

这正是 Django 项目的“骨架”。


manage.py 是做什么的?

manage.py 是你与 Django 项目交互的主要入口。

你将通过它来:

  • 启动开发服务器
  • 创建应用(app)
  • 进行数据库迁移
  • 创建管理员账户

你可以把它理解为:项目的控制面板。

几乎所有命令,都会从这里开始。


Config 目录是什么?

config 目录,是真正的项目配置目录

它负责:

  • 全局配置
  • URL 路由入口
  • Web 服务启动接口

初学阶段,你只需要重点关注三个文件:

  • settings.py
  • urls.py
  • manage.py

3.启动开发服务器

现在,让我们做一件非常重要的事情: 启动 Django 自带的开发服务器。

在项目根目录下执行:

python manage.py runserver

如果你看到类似下面的输出:

Starting development server at http://127.0.0.1:8000/

恭喜你 🎉 你的第一个 Django 项目已经成功运行了。

打开浏览器,访问:

http://127.0.0.1:8000/

image-20251224143742539

这个页面看起来很简单,但它背后的意义非常重要。


4.Django 在背后做了什么?

当你访问 http://127.0.0.1:8000/ 时,发生了以下事情:

  1. 浏览器发送 HTTP 请求
  2. Django 接收到请求
  3. Django 查找 URL 路由规则
  4. 找到对应的视图函数
  5. 返回 HTTP 响应

image-20251224141434624

这五个步骤,几乎涵盖了 Django Web 开发的全部核心思想。

接下来的章节,我们会反复回到这个流程。


5.settings.py:项目的大脑

打开 settings.py,你会看到大量配置项。

现在不需要全部理解,但有几个你必须知道的:


INSTALLED_APPS

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]

这里列出了当前项目启用的所有应用

Django 本身就自带了一些非常强大的功能:

  • 管理后台
  • 用户认证
  • 会话管理

在后续章节中,我们会把自己的应用也加进这里。


MIDDLEWARE

Middleware 是 Django 的“中间层”。

你可以把它理解为:

在请求到达视图之前、响应返回浏览器之前,执行的一系列处理步骤。

例如:

  • 安全检查
  • 会话处理
  • CSRF 防护

现在只需要知道它的存在即可。


DATABASES

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}

默认情况下,Django 使用 SQLite 数据库。

这是一个非常适合学习和原型开发的数据库,不需要额外安装,开箱即用。

我们的学生成绩系统,在前期就会基于它来构建。


6.urls.py:请求的入口

打开 studentsys/urls.py

from django.contrib import admin
from django.urls import path

urlpatterns = [
path('admin/', admin.site.urls),
]

这是整个项目的 URL 总入口

意思是:

  • 访问 /admin/
  • 交给 Django 自带的后台系统处理

目前只有这一条路由,但很快,我们会为学生成绩系统添加更多路径。


7.Django 的设计哲学

在这一章的最后,我想简单说一下 Django 的设计理念。

Django 有一句非常著名的口号:

The web framework for perfectionists with deadlines

它希望你:

  • 少写重复代码
  • 专注业务逻辑
  • 快速构建可用系统

这也是为什么 Django 特别适合用来开发管理系统、后台系统,以及像“学生成绩管理”这样的典型应用。


8.本章小结(Summary)

在这一章中,你已经:

  1. 创建了第一个 Django 项目
  2. 成功运行了开发服务器
  3. 理解了项目的基本结构
  4. 对 Django 的工作流程有了整体认识

请你现在停下来,亲手完成以下三件事:

  • 再次运行一次 runserver
  • 打开 settings.pyurls.py 阅读代码
  • 尝试理解每个文件的大致职责

在下一章中,我们将创建第一个 Django 应用(App),并正式开始构建学生成绩管理系统的核心功能。

现在,一切都已经准备好了。