Python 编程实战 · 实用工具与库 — Django 项目结构简介

Django 是 Python 中最成熟的 Web 框架之一,内置 ORM、模板引擎、权限系统、后台管理等完整功能,非常适合构建中大型 Web 应用。

刚创建 Django 项目时,新手最疑惑的问题之一就是: "这些文件夹到底是干什么的?"

本篇内容将带你彻底理解 Django 的项目结构,掌握一个 Django 项目应该如何组织与运行。


一、创建 Django 项目

假设您已经安装 Django:

bash 复制代码
pip install django

创建项目:

bash 复制代码
django-admin startproject mysite

结构如下:

markdown 复制代码
mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

二、项目根目录结构讲解

下面是 Django 项目默认目录的解释。


1. manage.py ------ 项目管理命令入口

你在开发中最常用的命令几乎都从这里运行:

bash 复制代码
python manage.py runserver
python manage.py migrate
python manage.py createsuperuser
python manage.py startapp app1

作用:

  • 提供 Django 命令行工具入口
  • 自动配置 Django 环境变量

2. 项目主目录(与项目同名)

第二层的 mysite/ 才是真正的项目配置目录,这里包含项目级别的配置文件。

结构如下:

markdown 复制代码
mysite/
    __init__.py
    settings.py
    urls.py
    asgi.py
    wsgi.py

让我们逐个介绍:


2.1 settings.py ------ 项目核心配置文件

settings.py 是 Django 项目的"大脑",里面包含所有全局配置,例如:

  • INSTALLED_APPS(安装的组件)
  • DATABASES(数据库配置)
  • MIDDLEWARE(中间件)
  • TEMPLATES(模板设置)
  • STATICFILES(静态文件路径)
  • DEBUG 开关

你修改最多的文件就是这个。


2.2 urls.py ------ 项目 URL 路由入口

定义网站的页面路径,决定某个 URL 应该交给哪个 app 来处理。

示例:

python 复制代码
from django.urls import path, include

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

建议:每个 App 单独一个 urls.py,通过 include 引入


2.3 wsgi.py ------ 部署 WSGI 服务器使用

用于部署 Python Web 服务(如 gunicorn、uWSGI)。

生产环境访问 Django 就是通过它。


2.4 asgi.py ------ 异步部署入口

ASGI(异步网关接口),支持:

  • WebSocket
  • 异步视图

新版 Django 项目默认提供,非常重要。


三、Django 应用 app 的结构

你创建一个新的 app:

bash 复制代码
python manage.py startapp blog

会生成如下结构:

markdown 复制代码
blog/
    migrations/
        __init__.py
    __init__.py
    admin.py
    apps.py
    models.py
    tests.py
    views.py

下面逐个解释:


1. models.py ------ 数据模型(ORM)

用于定义数据库表结构。

示例:

python 复制代码
class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()

2. views.py ------ 视图层(业务逻辑)

处理请求、返回响应。

python 复制代码
from django.http import HttpResponse

def home(request):
    return HttpResponse("Hello Django")

3. urls.py(需要手动创建)------ app 路由

推荐为每个 app 添加一个 urls.py

python 复制代码
from django.urls import path
from . import views

urlpatterns = [
    path('', views.home),
]

在主项目中 include:

python 复制代码
path('blog/', include('blog.urls'))

4. admin.py ------ Django 后台管理配置

让数据模型可以在后台被管理:

python 复制代码
from django.contrib import admin
from .models import Article

admin.site.register(Article)

后台地址:

bash 复制代码
/admin/

5. apps.py ------ app 的配置信息

一般无需修改。


6. migrations/ ------ 数据表迁移记录

执行:

bash 复制代码
python manage.py makemigrations
python manage.py migrate

所有数据库结构变更都会以脚本保存在这里。


7. tests.py ------ 单元测试

用于写自动化测试。


四、推荐的 Django 项目结构(企业常用)

随着项目变大,官方默认结构不够用,可以采用如下结构:

markdown 复制代码
mysite/
    manage.py
    mysite/
        settings/
            __init__.py
            base.py
            dev.py
            prod.py
        urls.py
        asgi.py
        wsgi.py

    apps/
        blog/
        users/
        orders/

    templates/
    static/
    media/

优点:

  • 按模块拆分 app,清晰可维护
  • 配置文件按环境拆分
  • 静态与模板集中管理

五、一个完整 Django 项目运行流程

  1. 浏览器访问 URL
  2. urls.py 路由分配
  3. 对应 views.py 执行业务逻辑
  4. 操作 models.py(数据库层)
  5. 返回模板或 JSON 响应
  6. 若有后台需求,通过 admin.py 管理数据

六、总结

本篇你学会了:

✔ Django 项目默认结构与功能

manage.py 的作用

✔ settings / urls / wsgi / asgi 的职责

✔ Django app 各文件的用途

✔ 企业级 Django 项目最佳结构

理解这些结构后,你就可以真正开始写 Django Web 应用,后续内容如模型、视图、模板、ORM 查询等都会更容易理解。

相关推荐
新之助小锅2 小时前
java版连接汇川PLC,发送数据,读取数据,保持重新链接,适用安卓
android·java·python
海琴烟Sunshine2 小时前
leetcode 383. 赎金信 python
python·算法·leetcode
惊讶的猫8 小时前
LSTM论文解读
开发语言·python
测试老哥8 小时前
软件测试之单元测试知识总结
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
buvsvdp50059ac9 小时前
如何在VSCode中设置Python解释器?
ide·vscode·python
小王不爱笑1329 小时前
Spring AOP(AOP+JDBC 模板 + 转账案例)
java·后端·spring
njxiejing9 小时前
Python进度条工具tqdm的安装与使用
开发语言·python
Python私教10 小时前
Rust基本语法
后端
Python私教10 小时前
Rust环境搭建
后端