Django个人博客系统(1-5)
1.创建项目与注册APP
本文采用的是最简单的创建Django项目的方法,即在Pycharm中创建项目时在左侧选择Django即可,我们只需修改项目的名称、确定是否采用虚拟环境(推荐使用虚拟环境),然后点击Create
即可。项目创建成功后,Django默认的一些目录和配置文件就全部准备好了。
项目是由多个子模块组成的,每一个模块在Django中就是一个app,例如我们博客项目中注册一个article
的app用来管理文章:
千万要注意的是,app创建成功之后一定要在settings.py
中注册,即在INSTALLED_APPS
中添加app的名称,通过注册的方式来告诉Django存在这么一个app。app创建的默认文件不含urls.py
,我们需要手动创建。
Django的路由是多级映射的,项目目录下的urls.py
主要负责将请求发送到具体的哪个app,而app目录下的urls.py
则负责转发到哪个具体的页面。因此,app注册成功后,我们要将app的路由文件添加到项目目录下的urls.py
中:
2.创建模型与数据迁移
Django框架采用MTV模式,即模型(Model)、模板(Template)和视图(Views)。Model负责存取数据,View负责决定需要调取哪些数据,而Template则负责将调取出的数据以合理的方式展现出来。
Django不需要直接定义数据库表,只需定义好模型就能自动从模型映射到数据库,处理与数据相关的事务。每个模型都都是django.db.models.Model
类的子类,从它继承了操作数据库需要的所有方法。每个字段都是Field
类的实例,如字符字段被表示为CharField
,日期时间字段被表示为DateTimeField
。
我们为article
创建一个ArticlePost
模型,如下:
注意,每当对数据库进行了更改(添加、修改、删除等)操作,都需要进行数据迁移。通过运行makemigrations
命令,Django会检测你对模型文件的修改,并且把修改的部分储存为一次迁移。但是此时你做的修改并没有反映到数据库中,它本质上只是个历史记录。只有通过migrate
命令才能将所有还没有执行过的迁移应用在数据库上,也就是将模型的更改同步到数据库中。
模型创建成功后,如需添加后台管理,以ArticlePost
为例,需要在article
的admin.py
中添加如下代码:
对于后台管理,我们使用Django自带的管理系统,使用之前需要注册一个超级用户,执行如下命令,然后输入用户名、邮箱、密码即可。
我们在浏览器中输入网址http://127.0.0.1:8000/admin/
,使用刚注册的账号登录后台管理系统,为ArticlePost
添加几条数据,以方便后续视图函数的调试。
3.创建视图与编写模板
Django中视图的概念是「一类具有相同功能和模板的网页的集合」,其作用是处理网页发来的请求(request)并返回响应(HttpResponse、Http404)。Django将会根据用户请求的URL来选择使用哪个视图并返回渲染后的对象。我们为文章列表创建一个视图:
视图编写完成后,需要添加到urls.py
文件中才能被调用。
接下来在根目录的templates
目录下创建文件夹来存放article
的模板文件,templates
是Django默认的模板文件存放目录,所谓模板就是用来展示数据的前端文件。
关于静态文件,我们首先需要注意的是它存放在根目录的static
目录下(需要手动创建),另外需要在settings.py
文件中加入以下几行代码:
模板中其实有很多部分是通用的,例如头部和脚注,对于这些我们可以将它们放到基类模板中,其他模板继承自基类模板。
base.html
:我们在该文件中通过{% load static %}
加载静态文件,并且通过block
预留一些内容填充的位置,其他模板均继承自该文件。
header.html
footer.html
list.html
用于展示文章列表,articles
是通过视图函数传递过来的所有文章对象,我们通过for
循环依次展示它们。
4.页面跳转与参数传递
到目前为止,我们已经知道了如何创建视图以及模板,我们按照上述方法再添加一个文章详情的功能页面。视图函数如下:
视图函数中的id参数是Django自动生成的用于索引数据表的主键(Primary Key),我们在写model的时候并没有写叫做id的字段。接下来我们需要将其添加到路由中:
<int:id>
:Django用尖括号<>定义需要传递的参数。最后是模板文件:
详情页面完成后,我们在导航中添加首页的跳转链接,方便从详情页回到文章列表。添加内容如下:
5.Markdown代码高亮
Markdown是博客中使用体验非常好的语法,添加Mardown支持的方法也很简单,只需安装markdown库即可(pip install markdown
)。为了将Markdown语法书写的文章渲染为HTML文本,我们需要修改article_detail()视图函数:
然后,需要修改detail.html
中有关文章正文的部分:
Django出于安全考虑,会对输出的HTML代码进行转义,这使得article.body
中渲染的HTML文本无法正常显示。|safe
的作用是表示这一段字符不需要进行转义了。
代码高亮是技术文章必不可少的部分,为此我们需要安装Pygments库(pip install Pygments
),然后在static
目录中新建一个md_css
目录,接着执行如下命令:
执行成功后就会在md_css
目录中生成了一个monokai.css
文件,然后在base.html
中引用这个文件就大功告成了。
由于Pygments的表格样式比较难看,因此我们在detail.html
中添加如下代码进行美化:
最终效果如下图所示:
文章参考博文:杜塞的博客
__EOF__

本文链接:https://www.cnblogs.com/marvin-wen/p/14964639.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix