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 查询等都会更容易理解。

相关推荐
老刘说AI7 小时前
Dify:从入门到精通
人工智能·python·神经网络·低代码·ai作画·开源软件
老鱼说AI7 小时前
长文预警!大模型面试:关于大模型微调的进阶与工程部署讲解
人工智能·深度学习·神经网络·学习·自然语言处理·面试·职场和发展
zhangzeyuaaa7 小时前
Python 闭包详解
开发语言·python
万粉变现经纪人7 小时前
如何解决 pip install tensorflow-gpu 报错 未检测到 CUDA 驱动 问题
人工智能·python·深度学习·aigc·tensorflow·bug·pip
ん贤7 小时前
Go GC 非玄学,而是 CPU 和内存的权衡
开发语言·后端·golang·性能调优·gc
架构师老Y7 小时前
009、容器编排实战:Kubernetes上的Python服务
python·容器·kubernetes
Freak嵌入式7 小时前
MicroPython LVGL基础知识和概念:底层渲染与性能优化
人工智能·python·单片机·性能优化·嵌入式·lvgl·micropython
ZhengEnCi13 小时前
M3-markconv库找不到wkhtmltopdf问题
python
码事漫谈15 小时前
当AI开始“思考”:我们是否真的准备好了?
前端·后端
2301_7644413315 小时前
LISA时空跃迁分析,地理时空分析
数据结构·python·算法