基于 Python3 和 Tornado 的博客系统 YangBlog

码农软件 · 软件分类 · 开源博客系统 · 2020-01-16 22:44:17

软件介绍

YangBlog

  • Tornado Blog

Demo 地址

YangBlog

技术栈

  • 基于 Py3 + Tornado

  • 前端框架 Bootstrap + JQuery

  • 富文本编辑框 bootstrap-wysiwyg

  • 字体图标 Font Awesome

  • 按钮 Buttons

  • 数据库 Mysql + Peewee

  • 图片存储 QiniuYun 对象存储

  • 画图使用 matplotlib

实现功能

  • /index 首页 文章列表,分页展示

  • /article 文章页,上一页,下一页按钮

  • /search 搜索标题展示页面,分页展示

  • 头部标题、底部信息、右侧友链使用ui_methods功能实现

  • /admin/index 后端管理页面,实现文章增加,删除,更

  • /admin/login 登录,使用Tornado的secure_cookie 认证

  • /upload 上传图片处理,直接上传到Qiniu对象存储中

待完成

  • 管理界面中的友链添加,删除,调整权重

  • 管理界面中的最新文章展示

  • 管理界面中的最后更改文章展示

  • 管理界面的Tag分类显示,搜索

  • 管理员忘记密码重置

更新 20171206

  • /admin/index 管理页面主页,展示服务器状态,目前仅Linux可用,

  • /admin/article 由原来的index迁移到此路由,管理文章

  • /admin/tag 管理tag

  • /admin/profile 管理个人资料

  • /admin/blog 管理博客的基本设置

  • /admin/flink 管理友链设置

  • /admin/status 生成状态图片,前端Ajax 定时轮训此地址获取最新图片,目前为1分钟一次

  • 先完成这些吧,暂时不会经常更新了

感谢

  • 开源软件

  • Qiniu云的免费对象存储

使用模块

  • peewee

  • qiniu

  • matplotlib

部署方法

  • config.py 中填写自己的qiniu对象存储的ACCESS_KEY,SECRET_KEY,BUCKET_NAME,BASE_STATIC_URL

  • config.py 中修改MYSQL_URL 为自己的地址

  • 使用 python app.py 启动,建议使用supervisor 管理程序运行

  • 出图需要安装服务器端的脚本,定时任务cron去上报数据到数据库中,不使用的话就把那段逻辑删除即可,不影响其他功能

  • 脚本如下

import pymysql.cursors
import datetime
import random
import subprocess

config = {
          'host':'127.0.0.1',
          'port':3306,
          'user':'root',
          'password':'',
          'db':'blog',
          'charset':'utf8',
          'cursorclass':pymysql.cursors.DictCursor,
          }

def inster_data(status_data):
    connection = pymysql.connect(**config)
    try:
        with connection.cursor() as cursor:
            # 执行sql语句,插入记录
            sql = 'INSERT INTO serverstatus (cpu_load_1, cpu_load_5, cpu_load_15, mem, created_date, update_date) VALUES (%s, %s, %s, %s, %s, %s)'
            cursor.execute(sql, (status_data['cpu'][0], status_data['cpu'][1], status_data['cpu'][2], status_data['mem'], datetime.datetime.now(), datetime.datetime.now()));
            # 没有设置默认自动提交,需要主动提交,以保存所执行的语句
            connection.commit()
    finally:
        connection.close()

ret = subprocess.check_output("uptime |awk -F 'average:' '{print $2}'",shell=True)
ret = ret.decode('utf-8').replace(' ', '').strip('\n')
cpu_status_data = ret.split(',')
ret = subprocess.check_output("free -m|awk '/Mem/{print $NF}'",shell=True)
ret = ret.decode('utf-8').replace(' ', '').strip('\n')
mem_status_data = ret
save_status = {'cpu':cpu_status_data,'mem': mem_status_data}
#print(save_status)
inster_data(save_status)

本文地址:https://www.codercto.com/soft/d/23543.html

Software Design 中文版 01

Software Design 中文版 01

[日] 技术评论社 / 人民邮电出版社 / 2014-3 / 39.00

《Software Design》是日本主流的计算机技术读物,旨在帮助程序员更实时、深入地了解前沿技术,扩大视野,提升技能。内容涵盖多平台软件开发技巧、云技术应用、大数据分析、网络通信技术、深度互联时代下的移动开发、虚拟化、人工智能等最前沿实践性讲解。以人脑思维模式,激发计算机操控的无限可能;以软件开发技巧,挖掘系统与硬件的最大价值。 《Software Design 中文版 01》的主题为......一起来看看 《Software Design 中文版 01》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

MD5 加密
MD5 加密

MD5 加密工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具