Python Flask开源个人博客代码,个人博客代码,没有写html模板继


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

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

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

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

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

解压密码:yangqq.com

技术分享图片

技术分享图片

技术分享图片

技术分享图片

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

技术分享图片

技术分享图片

技术分享图片

技术分享图片

粗略介绍一下功能,具体功能可以去演示站查看,因为没有抽取模板,可能各页面暂时效果会有所差距文章评论,评论回复,评论点赞,评论管理暂时没写文章点赞,文章打赏,个人名片,云词标签,文章推荐(推荐分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状态更改为1status状态为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的字段支持utf8mb4ALTER table info_adminuser modify about_me text character set utf8mb4 collate utf8mb4_unicode_ci;设置留言表的字段支持utf8mb4ALTER 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;设置留言表支持utf8mb4ALTER TABLE info_gbook CHARSET=utf8mb4;设置文章评论表支持utf8mb4ALTER table info_comment modify content text character set utf8mb4 collate utf8mb4_unicode_ci;设置库支持utf8mb4SET NAMES utf8mb4;查看数据库编码类型show variables like ‘character%‘;在SQL创建数据库的时候设置CREATE DATABASE myblog CHARSET=UTF8mb4;只有这样mysql://user:[email protected] /db?charset=utf8mb4才能生效设置数据库表编码方式为utf8mb4class 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异步发起浏览器信息获取请求   暂时无法实现,因为需要获取到浏览器信息才能写入数据库    文章评论管理

Python Flask开源个人博客代码

评论关闭