尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Django 实战总结:手把手教你搭建个人博客

Django 实战总结:手把手教你搭建个人博客
📅 发布时间:2026/6/21 21:01:06

Django 是 Python 世界中最重量级的 Web 框架。它的核心哲学是 DRY (Don't Repeat Yourself),即“不要重复造轮子”。

在这篇文章中,我们将通过搭建一个个人博客系统,来总结 Django 开发中最常用的核心方法和流程。

  1. 核心架构:MTV 模式

在开始写代码前,必须理解 Django 的设计模式 MTV:

M (Model): 数据存取层。负责定义数据库结构(表、字段)。

T (Template): 表现层。负责把数据渲染成 HTML 页面给用户看。

V (View): 业务逻辑层。负责接收请求、读取数据、调用模板、返回响应。

简单来说:用户访问 -> View 接收 -> 找 Model拿数据 -> 塞进 Template -> 返回给用户。

  1. 环境搭建与项目初始化

这是 Django 开发的起手式。

常用命令

1. 安装 Django

pip install django

2. 创建新项目 (Project) - 比如叫 myblog

django-admin startproject myblog

3. 进入目录

cd myblog

4. 创建一个应用 (App) - 比如叫 blog

python manage.py startapp blog

关键点:创建 App 后,一定要去 settings.py 的 INSTALLED_APPS 列表里注册它!

myblog/settings.py

INSTALLED_APPS = [
...
'blog', # 注册我们的应用
]

  1. 第一步:定义数据 (Models)

博客最核心的数据就是“文章”。我们需要在数据库里建一张表。在 Django 中,我们只需要写一个 Python 类。

blog/models.py

from django.db import models
from django.contrib.auth.models import User # 导入内置的用户模型

class Post(models.Model):
# 标题:字符字段,最大长度200
title = models.CharField(max_length=200)

# 作者:外键关联到 User 表
author = models.ForeignKey(User, on_delete=models.CASCADE)# 正文:文本字段,不限长度
body = models.TextField()# 创建时间:自动设置为当前时间
created_at = models.DateTimeField(auto_now_add=True)def __str__(self):return self.title  # 这样在后台显示的不仅是 Object,而是文章标题

常用操作:数据库迁移
每当修改了 models.py,都必须执行以下两条命令来同步数据库:

python manage.py makemigrations # 生成迁移文件(记录你的修改)
python manage.py migrate # 执行迁移(真正修改数据库)

  1. 第二步:后台管理 (Admin)

Django 最强大的功能之一就是自带后台。我们只需要几行代码,就能拥有一个功能完备的文章管理系统。

blog/admin.py

from django.contrib import admin
from .models import Post

admin.site.register(Post)

现在,创建一个管理员账号:

python manage.py createsuperuser

运行服务 python manage.py runserver,访问 http://127.0.0.1:8000/admin,你就可以在网页上发布文章了!

  1. 第三步:处理逻辑 (Views)

我们现在需要两个页面:

首页:列出所有文章。

详情页:查看单篇文章内容。

blog/views.py

from django.shortcuts import render, get_object_or_404
from .models import Post

1. 首页视图

def post_list(request):
# ORM 查询:获取所有文章,并按时间倒序排列
posts = Post.objects.all().order_by('-created_at')
# render 方法:渲染模板,并把 context 数据传过去
return render(request, 'blog/post_list.html', {'posts': posts})

2. 详情页视图

def post_detail(request, pk):
# 获取指定 ID (pk) 的文章,如果不存在则返回 404 错误
post = get_object_or_404(Post, pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})

关键方法总结:

Post.objects.all(): 获取所有数据。

Post.objects.filter(...): 筛选数据。

get_object_or_404: 安全地获取单个对象。

render: 将数据和 HTML 模板结合并返回。

  1. 第四步:配置路由 (URLs)

我们需要告诉 Django,当用户访问什么网址时,调用哪个 View。

myblog/urls.py (主路由)

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')), # 将根路径转发给 blog 应用
]

blog/urls.py (App 路由 - 需新建)

from django.urls import path
from . import views

urlpatterns = [
# 首页:访问空路径 '' 时,调用 views.post_list
path('', views.post_list, name='post_list'),

# 详情页:访问 post/数字 时,调用 views.post_detail
# <int:pk> 是路径转换器,会把 URL 中的数字捕获并传给 view 函数的 pk 参数
path('post/<int:pk>/', views.post_detail, name='post_detail'),

]

  1. 第五步:编写页面 (Templates)

最后,我们需要写 HTML 来展示数据。Django 使用其特有的模板语言 (DTL)。

blog/templates/blog/post_list.html

我的博客

最新文章

<!-- 模板标签:循环遍历 posts 列表 -->
{% for post in posts %}<div><!-- URL 标签:根据 name 生成链接,不用硬编码 URL --><h2><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h2><p>作者: {{ post.author }} | 时间: {{ post.created_at }}</p><p>{{ post.body|truncatewords:30 }}</p> <!-- 过滤器:只显示前30个词 --></div><hr>
{% endfor %}

blog/templates/blog/post_detail.html

{{ post.title }}

{{ post.title }}

发布于: {{ post.created_at }}

{{ post.body|linebreaks }}

返回首页

  1. 总结:Django 开发核心流

回顾一下,当你需要开发一个新功能时,流程通常是这样的:

Models: 需要存什么新数据? -> 修改 models.py -> 迁移数据库。

URLs: 用户访问什么地址? -> 修改 urls.py。

Views: 拿到数据怎么处理? -> 修改 views.py。

Templates: 页面长什么样? -> 修改 .html 文件。

掌握了这个 MTV 闭环,你就掌握了 Django 开发的精髓。

相关新闻

  • 2025年飘雪机制造商权威推荐榜单:小型飘雪机/人工飘雪机/大型飘雪源头厂家精选 - 品牌推荐官
  • 2025年12月医学教育题库评测:昭昭题库的综合表现分析 - 品牌测评鉴赏家
  • ★★★指针数组,数组指针,指针函数,函数指针,二级指针,递归函数,回调函数,函数指针数组

最新新闻

  • Display Driver Uninstaller:彻底解决显卡驱动冲突的终极免费工具
  • 1.1 大模型金融分类文本 提示词案例
  • 2026郑州漏水检测维修精选优质服务商TOP5推荐!卫生间漏水/厨房漏水/屋顶天花板漏水/阳台漏水/地下室漏水防水补漏检测维修-正规防水补漏公司优选口碑榜测评推荐 - 即刻修防水
  • 抖店新店冷启动实操方案,新手起店逻辑 + 流量获取一站式教学 - 抖掌柜
  • Real-ESRGAN-GUI:5分钟让你的模糊图像焕然一新!双引擎AI超分工具完整实战指南
  • 抖店无货源售后全流程解决方案:一键同步厂家退货地址,规避售后处罚 - 抖掌柜

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号