零基础带你玩转Python Django框架:从底层原理解析到实战全流程
零基础带你玩转Python Django框架:从底层原理解析到实战全流程
文章目录
👨💻 博主主页: 星川皆无恙的CSDN博客
💡 本文导读: 在很多大数据可视化、AI大模型本地部署(如我们之前讲过的DeepSeek部署)以及爬虫项目中,我们都需要一个强大、稳定的后端框架来做支撑。今天,我们将回归基础,零基础带大家吃透Python生态中最强大的Web框架——Django。本文从底层原理到代码实战,绝对细致入微,强烈建议点赞收藏,慢慢学习!
本文章整理的项目代码文件:
链接: https://pan.baidu.com/s/1e_N0JTi36ucUeI3LeF40jw?pwd=ah4r 提取码: ah4r
一、 为什么是Django?(背景与优势)
1.1 什么是Django?
Django 是一个高级的 Python Web 框架,它鼓励快速开发和干净、实用的设计。它由经验丰富的开发者构建,旨在解决 Web 开发中的大部分麻烦,让你可以专注于编写应用程序,而不需要重新造轮子。
它的核心理念是:DRY (Don’t Repeat Yourself - 不要重复你自己) 和 快速开发。
1.2 为什么大数据/AI开发者也需要学习Django?
不少同学都有疑问,自己是做数据分析、机器学习或爬虫的,为什么要学Web框架?
- 数据可视化大屏: 我们用Python处理好的海量数据,最终需要通过前端展示给用户,Django是连接数据库与前端图表(如Echarts)的最佳桥梁。
- AI模型API化: 训练好的大模型(如基于TensorFlow的垃圾分类识别、Deepseek等),需要对外提供接口,Django配合Django REST framework能够轻松实现API的封装。
- 数据管理后台: Django自带一个功能极其强大的Admin后台,非常适合用来做爬虫数据的监控、清洗和管理。
二、 核心原理解析:MVC 与 Django 的 MTV 模式
在写代码之前,必须搞懂Django的运行逻辑。很多主流框架采用 MVC (Model-View-Controller) 模式,而 Django 采用的是独具特色的 MTV 模式。本质上它们是一样的,只是分工和命名有所不同。
- M (Model) - 模型:负责与数据库的交互。Django 自带了一个非常强大的 ORM (对象关系映射) 系统,让你不用写一句 SQL 语句,就能用 Python 代码完成对数据库的增删改查。
- T (Template) - 模板:负责表现层(前端展示)。它决定了数据如何显示给用户。Django 自带有自己的一套模板语法(DTL),可以将动态数据嵌入到 HTML 页面中。
- V (View) - 视图:负责业务逻辑。视图是 Django 的大脑,它接收用户的 HTTP 请求,去 Model 中获取数据,然后再把数据塞给 Template,最后返回渲染好的 HTML 给用户。
🔄 生命周期图解(脑内构图): 用户浏览器 ➔ URL路由(urls.py) ➔ 视图函数(views.py) ➔ 模型(models.py) ➔ 数据库 ➔ 模型返回数据 ➔ 视图处理数据 ➔ 模板(templates) ➔ 返回HTML至浏览器。
三、 实战环境准备:Python 3.9.0
为了保证大家在跟着做的时候不出错,我们简单规范开发环境。
- 操作系统:Windows / macOS / Linux 均可
- Python版本:这里采用 Python 3.9.0 (3.9.x 是目前非常稳定且兼容各大AI库和Django版本的选择)
- Django版本:推荐 Django 4.2 LTS(长期支持版,完全兼容Python3.9)
3.1 创建虚拟环境
为了不污染全局Python环境,建议使用虚拟环境。打开终端(CMD/Terminal):
# 1. 创建名为 venv 的虚拟环境 (确保你当前处于你的工作目录下)
python -3.9 -m venv venv
# 2. 激活虚拟环境
# Windows 系统:
venv\Scripts\activate
# macOS/Linux 系统:
source venv/bin/activate
3.2 安装 Django
激活虚拟环境后,命令行的前面会出现 (venv) 的标志。

接着输入以下命令安装 Django:
# 指定安装 4.2.x 稳定版本
pip install django==4.2.* # 检查安装是否成功
python -m django --version
如果输出 4.2.x,说明环境搭建大功告成!

四、 从零构建你的第一个 Django 项目
在这里,我们以一个“极简大数据资讯管理系统”为例,带大家走通全流程。
4.1 创建 Project(项目)
在终端中输入:
django-admin startproject DataHub
执行后,会生成一个名为 DataHub 的文件夹。项目的目录结构如下:
DataHub/
manage.py # Django的命令行工具,后续运行、生成数据库表全靠它
DataHub/
__init__.py # 告诉Python这是一个包
settings.py # 项目的核心配置文件 (极其重要!)
urls.py # URL路由配置文件 (门面,负责分发请求)
asgi.py / wsgi.py # 部署上线时的网关接口文件

4.2 创建 App(应用)
一个 Project 可以包含多个 App。比如一个电商系统(Project),可以包含订单管理(App)、用户管理(App)。 进入刚刚创建的 DataHub 目录中:
cd DataHub
python manage.py startapp articles
python manage.py startapp articles 是在 Django 项目中创建一个新应用(app)的命令。下面逐段解析:
🔹 命令结构
python
调用 Python 解释器来执行脚本。manage.py
Django 项目的核心管理脚本,用来执行各种项目相关操作(如启动服务、迁移数据库、创建应用等)。startapp
Django 内置命令,用于创建一个新的应用模块。articles
应用的名称(你自定义的)。这里表示创建一个叫“articles”的应用,通常用于处理文章相关功能。
🔹 执行后会发生什么?
运行后,Django 会自动生成一个目录结构:
articles/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
🔹 各文件作用简述
models.py👉 定义数据库模型(表结构)views.py👉 编写业务逻辑(处理请求)admin.py👉 注册模型到后台管理apps.py👉 应用配置tests.py👉 单元测试migrations/👉 数据库迁移文件
🔹 一句话总结
👉 这个命令的本质是:
在 Django 项目中创建一个功能模块(应用),用于组织相关业务代码。
此时多了一个 articles 文件夹。为了让 Django 知道我们创建了这个 App,必须去注册它。 打开 DataHub/settings.py,找到 INSTALLED_APPS,添加我们刚创建的 app:
Python
# DataHub/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 👇 注册我们自己的 App
'articles',
]

4.3 启动开发服务器
检查一切是否正常,运行以下命令:
python manage.py runserver
打开浏览器访问 http://127.0.0.1:8000/。如果看到带有小火箭升空的 “The install worked successfully! Congratulations!” 页面,恭喜你,你的Django项目成功跑起来了!
五、 M - Model层:数据模型与ORM
假设我们的应用需要存储“大数据技术文章”,我们需要在数据库中建表。
在Django中,我们不需要写SQL,只需要在 models.py 里写Python类。
打开 articles/models.py,编写如下代码:
from django.db import models
# Create your models here.
class Article(models.Model):
##models.Model是Django所有数据模型的“基类 (父类)”
"""文章数据模型:定义数据库中的表结构"""
"""author:字段名,对应数据库中的列名
models包含所有数据库字段类型
CharField:字符串字段类型,用于存储文本
max_length = 50指定字符的最大字符长度
verbose_后台显示的字段名称
"""
title = models.CharField(max_length=200,verbose_name="文章标题")
author = models.CharField(max_length=50,verbose_name="作者")
content = models.TextField(verbose_name="正文内容")
publish_date = models.DateTimeField(auto_now_add=True,verbose_name="发布时间")
views = models.IntegerField(default=0,verbose_name="阅读量")
def __str__(self):
""""用文章标题作为对象的「显示名」"""
#改备注
return self.title
class Meta:
#分类
verbose_name="科技文章"
verbose_name_plural="科技文章"
关键操作:数据迁移 (Migration) 写好模型后,我们要把这套设计图翻译成数据库里的真实表格(默认使用自带的 SQLite 数据库,非常适合新手)。 终端执行两步走(每次修改 models.py 都要执行这两步):
# 1. 生成迁移文件 (生成蓝图)
python manage.py makemigrations

# 2. 执行迁移 (真正去数据库建表)
python manage.py migrate

六、 V - View层:视图与业务逻辑
数据库有表了,接下来我们写一个函数(视图),把数据取出来展示给用户。 打开 articles/views.py:
from django.shortcuts import render
# Create your views here.
from .models import Article
def article_list(request):
"""
视图函数:处理获取文章列表的请求
"""
"""从数据库中获取所有文字,并按照发布时间倒序排列"""
articles =Article.objects.all().order_by('-publish_date')
"""
将数据打包成字典形式,传给前端模板
"""
context ={
'articles': articles,
'pahe_title':'星川皆无恙的大数据咨询站'
}
# 渲染并返回一个HTML模板
#通过视图函数把函数取出来展示给用户
return render(request,'articles/list.html',context)
七、 URL配置:告诉Django怎么找你的视图
视图写好了,但用户在浏览器里输入什么网址才能访问到它呢?这就需要配置路由(URL)。
第一步:在项目的总路由 DataHub/urls.py 中引入我们 App 的路由。
Python
# DataHub/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
# 将包含 'articles/' 的请求转发给 articles app 的 urls.py 处理
path('articles/', include('articles.urls')),
]
第二步:由于 articles 文件夹下默认没有 urls.py,我们需要手动创建一个 articles/urls.py 文件:
Python
# articles/urls.py
from django.urls import path
from . import views
urlpatterns = [
# 当用户访问 /articles/ 时,触发 views.article_list 视图函数
path('', views.article_list, name='article_list'),
]
八、 T - Template层:前端模板渲染
最后一步,我们需要把视图传过来的数据(字典)通过 HTML 展示出来。 在 articles 目录下创建一个文件夹叫 templates,然后在里面再创建一个叫 articles 的文件夹(这是Django推荐的命名空间做法),最后在里面新建 list.html。
结构:articles/templates/articles/list.html
写入以下 HTML 代码(使用了 Django 模板语言 DTL,即 {{ }} 和 {% %} 标签):
HTML
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>{{ page_title }}</title>
<style>
body { font-family: "Microsoft YaHei", sans-serif; padding: 20px; background-color: #f4f5f7; }
.article-card { background: white; padding: 15px; margin-bottom: 15px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
.title { color: #333; font-size: 20px; font-weight: bold;}
.meta { color: #888; font-size: 14px; margin: 10px 0;}
</style>
</head>
<body>
<h1>🌟 {{ page_title }}</h1>
<hr>
{% for article in articles %}
<div class="article-card">
<div class="title">{{ article.title }}</div>
<div class="meta">
<span>作者:{{ article.author }}</span> |
<span>发布时间:{{ article.publish_date|date:"Y-m-d H:i" }}</span> |
<span>阅读量:{{ article.views }}</span>
</div>
<p>{{ article.content }}</p>
</div>
{% empty %}
<p>暂时还没有发布任何文章哦~</p>
{% endfor %}
</body>
</html>
九、 体验Django神级特性:Admin 管理后台
如果刚才的页面显示“暂时还没有发布任何文章哦~”,那我们怎么造数据呢?还要写一个添加文章的前端页面吗? 不用!Django 最强之处在于它自带开箱即用的 Admin 后台!
1. 创建超级管理员账号
Bash
python manage.py createsuperuser
# 按照提示输入用户名(如 admin)、邮箱、密码。密码输入时是不可见的,正常敲完回车即可。

2. 在后台注册我们的模型 打开 articles/admin.py:
from django.contrib import admin
# Register your models here.
from django.contrib import admin
from .models import Article
"""
注册我们的Article模型
"""
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
"""
配置在后台列表页显示的字段
"""
list_display =('title','author','publish_date','views')
"""
增加搜索功能
"""
search_fields =('title','author')
3. 见证奇迹 重新启动服务器 python manage.py runserver。保存后,再次访问 http://127.0.0.1:8000/articles/,你就会发现前端页面完美地将你刚才添加的数据渲染出来了!


浏览器访问 http://127.0.0.1:8000/admin。 输入你刚才创建的账号密码。你将看到一个全功能的管理后台!在这里,你可以随意添加“科技文章”,比如录入几篇你爬取的大数据帖子。

更多推荐


所有评论(0)