零基础带你玩转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。 输入你刚才创建的账号密码。你将看到一个全功能的管理后台!在这里,你可以随意添加“科技文章”,比如录入几篇你爬取的大数据帖子。

在这里插入图片描述

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐