我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python Flask开源个人博客代码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python Flask开源个人博客代码

没有写html模板继承,有时间再补吧,或者感兴趣的自己抽取一下

博客演示站点:http://www.7z1.xyz/

如出现未备案,请直接访问:http://119.23.230.6/

后台管理地址:/admin/login 账号:admin 密码:admin

前端代码链接:https://pan.baidu.com/s/1EDDD_ct4eYgxOlpzZw7IVA 密码:bgc2

解压密码:yangqq.com

Python Flask开源个人博客代码

Python Flask开源个人博客代码

Python Flask开源个人博客代码

Python Flask开源个人博客代码

安装过程:

1. 下载源码git clone https://github.com/a4demon/flask_blog
2. cd 到项目目录
3. 根据自己需要是否创建虚拟环境,随后安装环境依赖  pip install -r  requirement.txt
4. 创建数据库,注意!!创建数据库时需要设置charset=utf8mb4,具体参照下面的评论模型有详细写
5. 修改config里面的数据库账号密码,以及数据库名
6. 初始化数据库,迁移生成数据库
   1.  python manage.py db init
   2. python manage.py db migrate
   3. python manage.py db upgrade
7. 导入数据库,导入数据库之后谨慎起见再重新将数据库设置,以及相关的表字段设置charset=utf8mb4
8. 安装redis,并启动redis-server,如果修改为flask自带的session存储cookie和session则不需要安装
9. 运行程序

Python Flask开源个人博客代码

Python Flask开源个人博客代码

Python Flask开源个人博客代码

Python Flask开源个人博客代码

粗略介绍一下功能,具体功能可以去演示站查看,因为没有抽取模板,可能各页面暂时效果会有所差距

文章评论,评论回复,评论点赞,评论管理暂时没写

文章点赞,文章打赏,个人名片,云词标签,

文章推荐(推荐分banner推荐,top推荐和特别推荐),

文章点击排行,友情链接管理,二维码等联系方式展示

文章发布时间轴,文章搜索功能暂时没写,分类展示,

文章逻辑删除与恢复(既隐藏文章),真实删除(从数据库彻底删除)

留言管理,所有post提交的数据都做过简单处理防止xss

支持emoji表情,对留言发布做了简单ip限制,防止恶意提交留言

网站信息编辑等等

采用的ckeditor编辑器,支持代码高亮

前端代码从网上下载的,出自www.yangqq.com

留言模块,云词标签特效也是从jq22.com下载

文章点赞

 登陆和未登陆:
    未登陆:记录当前cookie,一个cookie只可点赞一次
    登陆:每个用户只可点赞一次,再次点击取消点赞

评论功能

 登陆和未登陆:
    未登陆:
    登陆:

统一为未登陆,整站为博客网站,不设用户注册功能,感觉没有必要,所以所有评论和回复皆为匿名评论

个人信息配置,写数据库模型文件,初始模型,最终已models.py为准

title           网站标题
description     描述信息
keywords        seo关键词
email           邮箱
wxid            微信公众号
wxcode          微信二维码
butoom_title    底部标题
beian           备案号
about           关于我
tags            云词标签    pointer-events在页面设置穿透属性,这样鼠标事件只会在设置auto的标签上生效
"title": self.title,
"description": self.description,
"keywords": self.keywords,
"email": self.email,
"wxid": self.wxid,
"wxcode": self.wxcode,
"butoom_title": self.butoom_title,
"beian": self.beian,
"about_me": self.about_me,
"card_name": self.card_name,
"card_job": self.card_job,
"card_about": self.card_about,
"card_avatar": self.card_avatar,

设置文章是否首页推荐 (推荐 and 特别推荐 and 首页推荐)

编写推荐文章模型类,外键关联文章id   已完成
后台编写视图,点击添加推荐文章    已完成

回收站

在文章管理页面删除文章为逻辑删除        将status状态更改为1
status状态为1的文章将不在后台和首页显示
可以前往回收站页面,选择将文章彻底删除或者恢复

友情链接管理

文章采集

在后台编写文章采集视图
接收参数    
    搜索关键词
    采集回来的文章分类
    文章来源    --- 例如:简书、CSDN

简书文章搜索接口    https://www.jianshu.com/search/do?q=python&type=note&page=1&order_by=default
    order_by=top            热门
    order_by=default        默认
    order_by=published_at   最新
    q=python                搜索关键词
    page=1                  页数

    返回数据

未完成

评论模型

var arr = [
        {id:1,img:"../static/images/img.jpg",replyName:"帅大叔",beReplyName:"",content:"同学聚会,看到当年追我的屌丝开着宝马车带着他老婆来了,他老婆是我隔壁宿舍的同班同学,心里后悔极了。",time:"2017-10-17 11:42:53",address:"深圳",osname:"",browse:"谷歌",replyBody:[]},
        {id:2,img:"../static/images/img.jpg",replyName:"匿名",beReplyName:"",content:"到菜市场买菜,看到一个孩子在看摊,我问:“一只鸡多少钱?” 那孩子回答:“23。” 我又问:“两只鸡多少钱?” 孩子愣了一下,一时间没算过来,急中生智大吼一声:“一次只能买一只!”",time:"2017-10-17 11:42:53",address:"深圳",osname:"",browse:"谷歌",replyBody:[{id:3,img:"",replyName:"帅大叔",beReplyName:"匿名",content:"来啊,我们一起吃鸡",time:"2017-10-17 11:42:53",address:"",osname:"",browse:"谷歌"}]},
        {id:3,img:"../static/images/img.jpg",replyName:"帅大叔",beReplyName:"",content:"同学聚会,看到当年追我的屌丝开着宝马车带着他老婆来了,他老婆是我隔壁宿舍的同班同学,心里后悔极了。",time:"2017-10-17 11:42:53",address:"深圳",osname:"win10",browse:"谷歌",replyBody:[]},
        {id:4,img:"../static/images/img.jpg",replyName:"匿名",beReplyName:"",content:"1”",time:"2017-10-17 11:42:53",address:"深圳",osname:"",browse:"谷歌",replyBody:[{id:3,img:"",replyName:"帅大叔",beReplyName:"匿名111",content:"2",time:"2017-10-17 11:42:53",address:"",osname:"",browse:"谷歌"},{id:3,img:"",replyName:"帅大叔333",beReplyName:"匿名11122",content:"233",time:"2017-10-17 11:42:53",address:"",osname:"",browse:"谷歌"}]},
        ];

id              记录每条评论的标记
img             头像地址                                             统一设置默认值
replyName       评论人昵称                                           如果为null默认是匿名用户
beReplyName     被回复的评论人昵称   只有二级评论才有该选项             同上
content         评论内容
time            创建时间
address         ip地址
osname          操作系统
browse          浏览器
replyBody       子评论

列表中每一个字典都是一条评论,如果有评论回复改评论,则replyBody又是一个列表,
列表里面嵌套对应的回复评论,有多少条评论,replyBody列表中就有多少个字典

首页留言页面不设回复评论功能
管理后台设置评论管理,在后台回复评论
父评论需对应子评论id
子评论beReplyName需对应父评论replyName   缺一不可

http://www.useragentstring.com/?uas={{ua}}&getJSON=all
传入ua字符串可获得浏览器及系统信息json字符串

设置评论和留言支持emoji表情插入,防止访客留言时输入emoji表情导致报错

设置about_me的字段支持utf8mb4
ALTER table info_adminuser modify about_me text character set utf8mb4 collate utf8mb4_unicode_ci;

设置留言表的字段支持utf8mb4
ALTER table info_gbook modify email varchar(32) character set utf8mb4 collate utf8mb4_unicode_ci;
ALTER table info_gbook modify replyName varchar(32) character set utf8mb4 collate utf8mb4_unicode_ci;
ALTER table info_gbook modify content text character set utf8mb4 collate utf8mb4_unicode_ci;

设置留言表支持utf8mb4
ALTER TABLE info_gbook CHARSET=utf8mb4;

设置文章评论表支持utf8mb4
ALTER table info_comment modify content text character set utf8mb4 collate utf8mb4_unicode_ci;

设置库支持utf8mb4
SET NAMES utf8mb4;

查看数据库编码类型
show variables like 'character%';

在SQL创建数据库的时候设置CREATE DATABASE myblog CHARSET=UTF8mb4;
只有这样mysql://user:pass@localhost /db?charset=utf8mb4才能生效

设置数据库表编码方式为utf8mb4
class User(Base):    
    __tablename__ = 'tb_user’       
    id = Column(Integer,primary_key = True,autoincrement=True)    
    name = Column(String(250),nullable=False,unique = True,comment=u"姓名")    
    __table_args__ = {        
        "mysql_charset" : "utf8mb4"
    }

过滤尖括号防止xss

获取ip问题 
在部署的时候,因为 nginx 配置文件设置了 
proxy_set_header Host $host:80; 
proxy_set_header X-Real-IP $remote_addr; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

因此通过 
from flask import request 
ip=request.headers['X-Forwarded-For'] 
就可以获取真实 ip

待补充
    根据ip限制每个ip当天只能留言10条,防止使用爬虫或者第三方工具恶意发布评论

    数据备份/数据恢复

    添加前端显示emoji表情功能,后台文章添加emoji表情           已完成

    添加celery异步发起浏览器信息获取请求   暂时无法实现,因为需要获取到浏览器信息才能写入数据库

    文章评论管理

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python Flask开源个人博客代码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python Flask开源个人博客代码

没有写html模板继承,有时间再补吧,或者感兴趣的自己抽取一下博客演示站点:http://www.7z1.xyz/如出现未备案,请直接访问:http://119.23.230.6/后台管理地址:/admin/login
2023-01-31

Python Flask开源博客系统Bl

本博文在51CTO技术博客首发。        开源不易,Python良心之作,真心送给广大朋友,恳请给予支持,不胜感激!                大家可以从下面的地址中去体验Blog_mini的功能,我把副本部署在了腾讯云上供大家使
2023-01-31

Python个人博客程序开发实例信息显示

这篇文章主要介绍了怎样用Python来实现一个完整的个人博客系统,我们通过实操上手的方式可以高效的巩固所学的基础知识,感兴趣的朋友一起来看看吧
2022-12-09

Python个人博客程序开发实例后台编写

这篇文章主要介绍了怎样用Python来实现一个完整的个人博客系统,我们通过实操上手的方式可以高效的巩固所学的基础知识,感兴趣的朋友一起来看看吧
2022-12-09

Python个人博客程序开发的方法是什么

开发Python个人博客程序的方法可以分为以下几个步骤:1. 确定功能需求:确定个人博客程序需要具备的功能,如用户注册登录、发表博文、编辑博文、评论、分类、标签等。2. 设计数据库结构:根据功能需求设计数据库结构,包括用户表、博文表、评论表
2023-08-11

Python个人博客程序开发实例框架设计

这篇文章主要介绍了怎样用Java来实现一个完整的个人博客系统,我们通过实操上手的方式可以高效的巩固所学的基础知识,感兴趣的朋友一起来看看吧
2022-12-09

Python个人博客程序开发实例用户验证功能

这篇文章主要介绍了怎样用Python来实现一个完整的个人博客系统,我们通过实操上手的方式可以高效的巩固所学的基础知识,感兴趣的朋友一起来看看吧
2022-12-09

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录