基于 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

.NET框架程序设计

.NET框架程序设计

(美)Jeffrey Richter、(美)Francesco Balena / 李建忠 / 华中科技大学出版社 / 2004-1 / 54.00元

Microsoft.NET框架为简化开发与卫联网无缝连接的应用程序和组件提供了强大的技术支持,如ASP.NET Web窗体、XML Web服务以及Windows窗体。本书的目的在于展示.NET框架中公共语言运行库存的核心内容。全书由两位广受尊敬的开发者/作者完成,并假设读者理解面向对象程序设计的基本概念,如数据抽象、继承和多态。书中内容清楚地解释了CLR的扩展类型系统,CLR如何管理类型的行为,以......一起来看看 《.NET框架程序设计》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试