DjangoBlog 项目运行与架构分析(基于 Python + Django)

一、项目简介

DjangoBlog 是一个基于 Python Web 框架 Django 开发的博客系统。该项目提供了完整的博客功能,包括文章管理、评论系统、分类与标签管理、全文搜索以及插件扩展等功能。项目结构清晰,功能模块化,非常适合用于学习 Django Web 开发和理解 MVC/MVT 架构模式。

本项目使用 Django 框架提供的 MVT(Model-View-Template)架构模式,通过对数据模型、业务逻辑和页面展示进行分层管理,使整个系统具有良好的可维护性和扩展性。

DjangoBlog 的主要功能包括:

  • 文章发布与管理

  • Markdown 编辑器支持

  • 分类与标签系统

  • 评论互动系统

  • 社交登录功能

  • Redis 缓存加速

  • SEO 搜索引擎优化

  • 插件扩展系统

通过运行该项目,可以完整体验一个博客系统从后台管理到前端展示的完整流程。


二、项目开发环境

本项目运行环境如下:

环境 版本
Python 3.x
Django 4.x
操作系统 Windows
数据库 SQLite / MySQL
编辑器 PyCharm / VSCode

项目主要技术栈:

  • Python Web开发

  • Django 框架

  • HTML + CSS + JavaScript

  • Markdown 编辑器

  • Redis 缓存

  • Whoosh / Elasticsearch 搜索


三、项目安装与运行

1 克隆项目

首先从 GitHub 下载项目:

git clone https://github.com/liangliangyy/DjangoBlog.git

进入项目目录:

cd DjangoBlog

2 创建虚拟环境

为了避免 Python 依赖冲突,需要创建虚拟环境:

python -m venv venv

激活虚拟环境:

Windows:

venv\Scripts\activate

成功后终端前面会显示:

(venv)

3 安装项目依赖

安装项目所需依赖:

pip install -r requirements.txt

依赖库包括:

  • Django

  • markdown

  • redis

  • django-mdeditor

  • django-compressor


4 配置数据库

项目默认使用 MySQL 数据库,也可以改为 SQLite。

在文件:

djangoblog/settings.py

修改数据库配置:

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

SQLite 数据库无需额外安装即可使用。


5 初始化数据库

执行以下命令创建数据表:

python manage.py makemigrations
python manage.py migrate

执行完成后会生成数据库文件:

db.sqlite3

6 创建管理员账号

创建 Django 后台管理员:

python manage.py createsuperuser

按照提示输入:

  • 用户名

  • 邮箱

  • 密码


7 运行项目

启动 Django 服务器:

python manage.py runserver

终端显示:

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

打开浏览器访问:

首页:

http://127.0.0.1:8000

后台管理系统:

http://127.0.0.1:8000/admin

通过后台可以管理文章、分类、标签以及评论。


四、项目整体结构

DjangoBlog 项目主要目录如下:

DjangoBlog
│
├── blog            # 博客核心功能
├── comments        # 评论系统
├── accounts        # 用户管理
├── oauth           # 第三方登录
├── plugins         # 插件系统
├── templates       # HTML模板
├── djangoblog      # 项目配置
│
├── manage.py       # Django管理脚本
├── requirements.txt

各模块功能:

模块 作用
blog 文章管理
comments 评论系统
accounts 用户账户
oauth 社交登录
plugins 扩展插件
templates 页面模板

五、Django 的 MVT 架构

Django 使用 MVT 架构模式开发 Web 应用。

MVT 分别代表:

  • Model(数据模型)

  • View(视图逻辑)

  • Template(模板页面)

整体运行流程如下:

用户请求 → URL 路由 → View → Model → Template → 返回页面

即:

Browser
   ↓
URL
   ↓
View
   ↓
Model
   ↓
Database
   ↓
Template
   ↓
Response

六、Model(数据模型)

Model 负责:

  • 定义数据结构

  • 与数据库进行交互

  • 通过 ORM 操作数据库

在 DjangoBlog 中,数据模型主要位于:

blog/models.py

例如文章模型:

class Article(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    created_time = models.DateTimeField()
    category = models.ForeignKey(Category)
    tags = models.ManyToManyField(Tag)

字段含义:

字段 作用
title 文章标题
body 文章内容
created_time 发布时间
category 分类
tags 标签

Django 通过 ORM 自动将 Python 类映射为数据库表。

例如:

Article.objects.all()

等价 SQL:

SELECT * FROM article;

这样开发者无需手写 SQL,大大提高开发效率。


七、View(视图层)

View 负责处理用户请求,并返回相应的数据和页面。

主要文件:

blog/views.py

示例:

def index(request):
    article_list = Article.objects.all()
    return render(request,'index.html',{
        'articles':article_list
    })

执行流程:

1 用户访问首页
2 URL 路由匹配
3 调用 index 视图函数
4 查询文章数据
5 返回模板页面

View 的主要职责:

  • 获取数据

  • 处理业务逻辑

  • 调用模板进行渲染


八、Template(模板层)

Template 负责页面展示。

模板文件位于:

templates/

例如:

index.html
article_detail.html
base.html

模板示例:

<h1>{{ article.title }}</h1>
<p>{{ article.body }}</p>

Django 模板语法:

语法 作用
{{ }} 输出变量
{% %} 逻辑控制

例如循环:

{% for article in articles %}
<h2>{{ article.title }}</h2>
{% endfor %}

Template 只负责展示数据,不处理复杂逻辑。


九、URL 路由

URL 用于将浏览器请求映射到 View。

配置文件:

djangoblog/urls.py

示例:

urlpatterns = [
    path('', views.index),
    path('article/<int:id>/', views.article_detail),
]

访问路径:

/                首页
/article/1       文章详情
/admin           后台管理

十、插件系统

DjangoBlog 的一个特色功能是插件系统。

插件目录:

plugins/

插件通过 Hook 机制实现扩展。

例如:

  • view_count(文章浏览统计)

  • seo_optimizer(SEO优化)

插件优点:

  • 不修改核心代码

  • 易于扩展

  • 模块化开发


十一、项目运行效果

项目运行后可以看到博客首页,包括:

  • 最新文章列表

  • 分类导航

  • 标签云

  • 评论区

后台管理系统可以进行:

  • 文章发布

  • 分类管理

  • 标签管理

  • 评论管理

整个系统实现了一个完整的博客平台。


十二、总结

通过运行 DjangoBlog 项目,可以深入理解 Django Web 开发流程以及 MVT 架构模式。

本项目具有以下特点:

1 模块化结构清晰
2 使用 Django ORM 简化数据库操作
3 模板系统实现前后端分离
4 插件系统支持功能扩展

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐