基于Django和clean-blog前端框架的博客系统
时间:2022-07-22
本文章向大家介绍基于Django和clean-blog前端框架的博客系统,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
这周总算是稍微有点自己的空闲时间了,趁下班时间赶紧撸点代码,之前找前端框架的时候找到个自我感觉挺好看、简约的博客模版,所以用Django实现了下。
1. 介绍
博客系统使用python3编写,基于Django 2.2和clean-blog前端框架编写。
我理解的博客系统只需专注于写作和阅读即可,不应该有太多胡里花哨的功能。
主要有如下功能:
提供一般的登录、注册、注销功能(线上已关闭注册),可添加文章,如果文章归属自己,可编辑文章,标签页归档该所有标签及所对应的文章,关于页添加介绍、联系等,提供分页功能。
首页:如果没有登录,后面的添加文章和注销将不展示。登录页可根据urls设置复杂点,线上注册可关闭。单页展示十个,可进行前后翻页。
添加文章:可自定义文章背景图,文章正文采用markdown格式,Typora写完之后使用源码模式,复制粘贴一把梭,非常爽,展示时可完美解析
标签页:标签页展示所有标签,并展示对应标签页下的所有文章简介及链接。
关于页:设置了关于作者、联系方式、友链等。
登录注册:比较简单,就使用了modelForm。
文章详情页:文章详情解析markdown正文,如果登录且文章为当前用户创建则显示编辑按钮。
2. 源代码
Github地址:https://github.com/w2n1ck/DCblog/
线上地址:https://www.w2n1ck.com/
3. 配置部署
部署使用Nginx+Gunicorn+Supervisor+Certbot,也是常见的python框架部署方式。
nginx配置文件:
[root@iZ2ze5t3hfgmgimaizhwq2Z conf.d]# cat dcblog_nginx.conf
server {
charset utf-8;
listen 80;
server_name www.w2n1ck.com;
location /static {
alias /var/www/html/static;
}
location / {
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:58000;
}
}
Gunicorn命令:
gunicorn dcblog.wsgi -w 2 -k gthread -b 127.0.0.1:58000
Supervisor配置:
[root@iZ2ze5t3hfgmgimaizhwq2Z conf.d]# cat dcblog_supervisor.ini
[program:dcblog]
command=gunicorn dcblog.wsgi -w 2 -k gthread -b 127.0.0.1:58000
directory=/root/dcblog
autostart=true
autorestart=unexpected
user=root
stdout_logfile=/root/dcblog/supervisor/var/log/dcblog-stdout.log
stderr_logfile=/root/dcblog/supervisor/var/log/dcblog-stderr.log
HTTPS证书:
yum -y install yum-utils
yum install -y certbot python2-certbot-nginx
certbot --nginx
# 设置定时任务保证不过期
echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null
- 洛谷P2925 [USACO08DEC]干草出售Hay For Sale
- Numpy 修炼之道 (13)—— 将python函数向量化
- 洛谷P1887 乘积最大3
- 18.CSS
- R语言可视化——ggplot图表系统中的形状
- [机器学习Lesson 1 Introduction] 机器学习的动机与应用
- 洛谷P3377 【模板】左偏树(可并堆)
- Numpy 修炼之道 (12)—— genfromtxt函数
- 19.JavaScript
- 20.DOM
- 洛谷P3273 [SCOI2011]棘手的操作
- [机器学习Lesson 2]代价函数之线性回归算法
- Docker初尝试1.What is Docker?2.Try It3.Use It
- 洛谷P1456 Monkey King
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Notification消息通知 自定义消息通知内容布局
- Android编程实现带渐变效果的圆角矩形示例
- Android仿苹果关机界面实现代码
- Android使用RecycleView实现拖拽交换item位置
- Android编程之计时器Chronometer简单示例
- Android OnFocuChangeListener焦点事件详解
- Android自定义加载圈动画效果
- Android 中ImageView的ScaleType使用方法
- ViewPager实现漂亮的引导页
- Android FTP 多线程断点续传下载上传的实例
- Android如何调用系统相机拍照
- Android开发之设置开机自动启动的几种方法
- Android图片等比例缩放和填充屏幕效果
- Android中自定义ImageView添加文字说明详解
- Android 中ThreadLocal的深入理解