https://gitee.com/huge-dream/django-vue3-admin

python --version

git --version

确定版本号。

然后下载代码:

git clone https://gitee.com/lylinux/DjangoBlog.git

进入;

cd DjangoBlog

创建虚拟环境,并安装依赖:

python -m venv venv

venv\Scripts\activate

pip install -r requirements.txt

好了,然后初始化数据库,创建管理员:

python manage.py migrate

python manage.py createsuperuser

启动项目:python manage.py runserver

前端:

后台:

该项目严格遵循 Django 的MVT(Model-View-Template) 架构设计。

一、Model(模型层):数据核心,定义数据结构与关系
Model 层是 DjangoBlog 的数据基础,对应项目中各类数据库表的结构定义,负责封装数据的存储、查询、更新、删除等操作,与数据库进行直接交互,无需开发者编写原生 SQL 语句。DjangoBlog 基于 Django 的 ORM(对象关系映射)实现 Model 层,支持 MySQL、SQLite 等数据库,核心模型分布在accounts、blog、comments等核心应用目录下。
核心模型及作用
blog 应用模型:博客核心业务数据,包含Article(文章)、Category(分类)、Tag(标签)、Page(独立页面)等模型,定义了文章的标题、内容、发布时间、阅读量、关联分类 / 标签等字段,以及模型间的关联关系(如一对多、多对多),是博客内容管理的核心;
accounts 应用模型:用户相关数据,基于 Django 内置用户模型扩展,定义了用户的头像、个人简介、社交账号、登录日志等字段,支撑用户注册、登录、个人信息管理等功能;
comments 应用模型:评论相关数据,包含Comment(评论)模型,定义了评论内容、关联文章、评论者、回复关系、发布时间等字段,实现评论与文章、用户的关联,支撑评论回复、邮件提醒等互动功能;
plugins 相关模型:插件扩展数据,为插件功能提供数据支撑(如view_count插件的文章浏览计数模型)。
模型层的额外能力
DjangoBlog 的 Model 层还通过模型方法、信号量实现了基础业务逻辑,例如文章发布时自动触发 SEO 相关处理、评论提交时触发邮件提醒信号、文章浏览时触发计数更新信号,让数据操作与基础业务逻辑深度绑定。
二、View(视图层):业务核心,处理请求与逻辑分发
View 层是 DjangoBlog 的业务逻辑中枢,连接 Model 层和 Template 层,负责接收前端 HTTP 请求、从 Model 层获取 / 处理数据、执行核心业务逻辑,最终将处理结果传递给 Template 层渲染,或直接返回 JSON 等响应数据。DjangoBlog 的视图层结合了 Django 的函数视图和类视图,核心视图分布在blog、accounts、comments、servermanager等应用的views.py文件中,同时通过URL 路由将前端请求映射到对应的视图函数 / 类。
视图层的核心工作
接收并解析请求:接收用户从前端发起的请求(如文章列表查询、文章详情访问、评论提交、用户登录 / 注册等),解析请求参数(如分页参数、文章 ID、用户表单数据);
业务逻辑处理:执行核心业务操作,例如:
访问文章列表时,从Article模型中分页查询数据,结合分类、标签进行筛选;
提交评论时,验证表单数据合法性,将评论信息保存到Comment模型,触发邮件提醒信号;
全文搜索时,调用 Whoosh/Elasticsearch 搜索引擎,结合 Model 层数据返回搜索结果;
插件功能执行,通过预定义钩子函数触发插件回调(如文章渲染后执行seo_optimizer插件的 SEO 优化逻辑);
数据传递与响应:将处理后的结构化数据(如文章列表、用户信息、评论列表)传递给 Template 层,或为前端异步请求返回 JSON 格式数据;同时处理异常情况(如 404、500 错误),返回对应的错误页面。
视图层的扩展特性
DjangoBlog 的视图层结合了 Django 的缓存机制(Redis),对高频访问的视图(如文章列表、首页)做了缓存处理,减少数据库查询,提升网站响应速度;同时通过装饰器实现了权限控制(如后台管理视图的登录验证、文章编辑的作者权限验证)。
三、Template(模板层):展示核心,渲染页面与前端交互
Template 层是 DjangoBlog 的前端展示层,负责将 View 层传递的结构化数据渲染为用户可浏览的 HTML 页面,结合 HTML5、CSS3、JavaScript 实现页面的视觉展示和交互效果,同时支持模板继承、模板标签、模板过滤器,实现页面代码的复用和灵活定制。DjangoBlog 的模板文件统一存放在  根目录templates 下,按业务模块划分目录结构,同时集成了django-compressor实现 CSS/JS 文件的自动压缩优化。
模板层的核心工作
页面结构渲染:通过 Django 模板语法,将 View 层传递的数据(如文章内容、用户信息、评论列表)填充到 HTML 模板中,生成最终的前端页面,例如:
首页模板渲染最新文章、热门文章、标签云等模块;
文章详情模板渲染文章标题、内容、分类标签、评论列表等内容;
后台管理模板渲染内容管理、用户管理、插件管理的操作界面;
前端交互实现:结合 JavaScript 实现页面的动态交互,例如黑夜模式切换、评论提交异步请求、侧边栏模块自定义、Markdown 编辑器的实时预览等;
模板复用与定制:通过模板继承定义基础模板(如base.html),包含网站的头部、尾部、导航栏等公共部分,其他业务模板继承基础模板并实现个性化内容,减少代码冗余;同时通过模板标签 / 过滤器扩展模板功能(如格式化时间、渲染 Markdown 内容、代码语法高亮)。
模板层的特色特性
DjangoBlog 支持多语言和黑夜模式,模板层通过动态加载 CSS 样式、多语言翻译文件,实现前端页面的语言切换和日夜模式切换;同时模板层遵循 SEO 友好设计,预留了标题、关键词、描述等 SEO 标签,结合seo_optimizer插件实现 SEO 信息的自动填充。
四、DjangoBlog MVT 架构的额外支撑模块
除了核心的 MVT 三层,DjangoBlog 还基于 Django 生态扩展了多个关键模块,让 MVT 架构的能力更完善,核心支撑模块如下:
URL 路由:项目根目录及各应用的urls.py,负责将前端 URL 请求映射到对应的 View 层视图,实现请求的分发,支持路由参数、路由分发、后台管理路由定制;
插件系统:核心特色模块,通过在 View 层预定义钩子函数,让插件可以在不修改核心 MVT 代码的前提下,扩展业务逻辑(如view_count插件在文章视图中触发浏览计数更新);
缓存系统:基于 Redis 实现,对 Model 层查询结果、View 层响应、Template 层静态页面进行缓存,提升系统性能;
静态文件管理:static目录存放 CSS、JS、图片等静态资源,通过collectstatic命令收集静态资源,结合django-compressor实现压缩优化;
后台管理:基于 Django 内置的admin系统扩展,对 MVT 层的 Model 进行可视化管理,实现文章、用户、评论、插件的快速操作。

Logo

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

更多推荐