Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。对于博客网站来说是典型的CMS应用。本文介绍通过Django+Vue的博客模版快速实现一个可用的博客网站。
这里用的博客模板是Gblog是一款nice的基于 vue 的博客模板。界面简洁轻快,非常适合用作个人博客。https://gitee.com/fengziy/Gblog 后台的接口和管理界面就通过Django框架来实现了。
这里数据库用mysql,接口框架主要用到的是Django的djangorestframework,内容编辑器用的是markdown通过django-mdedior库实现。
一、依赖库
1 | asgiref==3.5.2 |
二、工程目录组织结构
三、代码实现
1、模型
模型很简单,根据Gblog前台要显示的内容包括有‘文章分类’、‘文章标签’、‘博客文章’、‘站点信息’、‘社交信息’、‘聚焦’,模型定义分别如下:
这里要说明的是因为博客文章内容准备用markdown编写,所以引入了mdeditor from mdeditor.fields import MDTextField
内容字段content=MDTextField(verbose_name='内容')
模型代码示例如下:
1 | from django.db import models |
2、admin管理
实际上只要把模型注册到admin就可以了
1 | from django.contrib import admin |
3、接口
前端是Vue模板展示的,所以要为前端Vue提供相应的接口。通过djangorestframework将模型通过restful接口提供是非常easy的。
1)首先将需要暴露的模型通过序列化类序列化
1 | serializers.py |
2)将序列化的对象通过视图类提供接口
custommodelviewset.py
1 | from rest_framework import status |
views.py
1 | # Create your views here. |
3)通过路由来实现接口地址和视图的绑定和访问
urls.py
1 | # -*- coding: utf-8 -*- |
4)自定义接口返回格式
接口需要根据Glog定义的格式进行定义和返回,这里就需要自定义接口返回格式。
具体实现参见:https://xiejava.blog.csdn.net/article/details/125773730
–自定义返回响应类customresponse.py
1 | from rest_framework.response import Response |
–翻页实现类mypage.py
1 | from rest_framework import status |
全部代码:
后台代码:https://gitee.com/xiejava/ishareblog
前台代码:https://gitee.com/xiejava/Gblog
四、效果
1、后台管理
管理界面
博客文章列表
文章内容编辑,支持markdown
分类管理
标签管理
社交信息
2、接口
接口清单
文章列表接口,支持翻页
文章详情接口
3、前台展现
文章列表
文章详情,支持markdown显示及目录
社交信息
博客效果地址:http://blog.ishareread.com
后续考虑
1、django原生admin的管理界面还是简陋了一点,后续可能会用其他管理界面的UI给换掉
2、现在有了一个hexo的博客了,后续可能会考虑实现hexo生成的博客内容直接同步到django的博客,或者django博客编辑的内容直接生成hexo的.md文件
有兴趣的话可以关注本博客
博客:http://xiejava.ishareread.com
关注微信公众号,一起学习、成长!