您好,登錄后才能下訂單哦!
解壓密碼:yangqq.com
安裝過(guò)程:
1. 下載源碼git clone https://github.com/a4demon/flask_blog
2. cd 到項(xiàng)目目錄
3. 根據(jù)自己需要是否創(chuàng)建虛擬環(huán)境,隨后安裝環(huán)境依賴 pip install -r requirement.txt
4. 創(chuàng)建數(shù)據(jù)庫(kù),注意??!創(chuàng)建數(shù)據(jù)庫(kù)時(shí)需要設(shè)置charset=utf8mb4,具體參照下面的評(píng)論模型有詳細(xì)寫
5. 修改config里面的數(shù)據(jù)庫(kù)賬號(hào)密碼,以及數(shù)據(jù)庫(kù)名
6. 初始化數(shù)據(jù)庫(kù),遷移生成數(shù)據(jù)庫(kù)
1. python manage.py db init
2. python manage.py db migrate
3. python manage.py db upgrade
7. 導(dǎo)入數(shù)據(jù)庫(kù),導(dǎo)入數(shù)據(jù)庫(kù)之后謹(jǐn)慎起見再重新將數(shù)據(jù)庫(kù)設(shè)置,以及相關(guān)的表字段設(shè)置charset=utf8mb4
8. 安裝redis,并啟動(dòng)redis-server,如果修改為flask自帶的session存儲(chǔ)cookie和session則不需要安裝
9. 運(yùn)行程序
粗略介紹一下功能,具體功能可以去演示站查看,因?yàn)闆]有抽取模板,可能各頁(yè)面暫時(shí)效果會(huì)有所差距
文章評(píng)論,評(píng)論回復(fù),評(píng)論點(diǎn)贊,評(píng)論管理暫時(shí)沒寫
文章點(diǎn)贊,文章打賞,個(gè)人名片,云詞標(biāo)簽,
文章推薦(推薦分banner推薦,top推薦和特別推薦),
文章點(diǎn)擊排行,友情鏈接管理,二維碼等聯(lián)系方式展示
文章發(fā)布時(shí)間軸,文章搜索功能暫時(shí)沒寫,分類展示,
文章邏輯刪除與恢復(fù)(既隱藏文章),真實(shí)刪除(從數(shù)據(jù)庫(kù)徹底刪除)
留言管理,所有post提交的數(shù)據(jù)都做過(guò)簡(jiǎn)單處理防止xss
支持emoji表情,對(duì)留言發(fā)布做了簡(jiǎn)單ip限制,防止惡意提交留言
網(wǎng)站信息編輯等等
采用的ckeditor編輯器,支持代碼高亮
前端代碼從網(wǎng)上下載的,出自www.yangqq.com
留言模塊,云詞標(biāo)簽特效也是從jq22.com下載
文章點(diǎn)贊
登陸和未登陸:
未登陸:記錄當(dāng)前cookie,一個(gè)cookie只可點(diǎn)贊一次
登陸:每個(gè)用戶只可點(diǎn)贊一次,再次點(diǎn)擊取消點(diǎn)贊
評(píng)論功能
登陸和未登陸:
未登陸:
登陸:
統(tǒng)一為未登陸,整站為博客網(wǎng)站,不設(shè)用戶注冊(cè)功能,感覺沒有必要,所以所有評(píng)論和回復(fù)皆為匿名評(píng)論
個(gè)人信息配置,寫數(shù)據(jù)庫(kù)模型文件,初始模型,最終已models.py為準(zhǔn)
title 網(wǎng)站標(biāo)題
description 描述信息
keywords seo關(guān)鍵詞
email 郵箱
wxid 微信公眾號(hào)
wxcode 微信二維碼
butoom_title 底部標(biāo)題
beian 備案號(hào)
about 關(guān)于我
tags 云詞標(biāo)簽 pointer-events在頁(yè)面設(shè)置穿透屬性,這樣鼠標(biāo)事件只會(huì)在設(shè)置auto的標(biāo)簽上生效
"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,
設(shè)置文章是否首頁(yè)推薦 (推薦 and 特別推薦 and 首頁(yè)推薦)
編寫推薦文章模型類,外鍵關(guān)聯(lián)文章id 已完成
后臺(tái)編寫視圖,點(diǎn)擊添加推薦文章 已完成
回收站
在文章管理頁(yè)面刪除文章為邏輯刪除 將status狀態(tài)更改為1
status狀態(tài)為1的文章將不在后臺(tái)和首頁(yè)顯示
可以前往回收站頁(yè)面,選擇將文章徹底刪除或者恢復(fù)
友情鏈接管理
文章采集
在后臺(tái)編寫文章采集視圖
接收參數(shù)
搜索關(guān)鍵詞
采集回來(lái)的文章分類
文章來(lái)源 --- 例如:簡(jiǎn)書、CSDN
簡(jiǎn)書文章搜索接口 https://www.jianshu.com/search/do?q=python&type=note&page=1&order_by=default
order_by=top 熱門
order_by=default 默認(rèn)
order_by=published_at 最新
q=python 搜索關(guān)鍵詞
page=1 頁(yè)數(shù)
返回?cái)?shù)據(jù)
未完成
評(píng)論模型
var arr = [
{id:1,img:"../static/images/img.jpg",replyName:"帥大叔",beReplyName:"",content:"同學(xué)聚會(huì),看到當(dāng)年追我的屌絲開著寶馬車帶著他老婆來(lái)了,他老婆是我隔壁宿舍的同班同學(xué),心里后悔極了。",time:"2017-10-17 11:42:53",address:"深圳",osname:"",browse:"谷歌",replyBody:[]},
{id:2,img:"../static/images/img.jpg",replyName:"匿名",beReplyName:"",content:"到菜市場(chǎng)買菜,看到一個(gè)孩子在看攤,我問:“一只雞多少錢?” 那孩子回答:“23?!?我又問:“兩只雞多少錢?” 孩子愣了一下,一時(shí)間沒算過(guò)來(lái),急中生智大吼一聲:“一次只能買一只!”",time:"2017-10-17 11:42:53",address:"深圳",osname:"",browse:"谷歌",replyBody:[{id:3,img:"",replyName:"帥大叔",beReplyName:"匿名",content:"來(lái)啊,我們一起吃雞",time:"2017-10-17 11:42:53",address:"",osname:"",browse:"谷歌"}]},
{id:3,img:"../static/images/img.jpg",replyName:"帥大叔",beReplyName:"",content:"同學(xué)聚會(huì),看到當(dāng)年追我的屌絲開著寶馬車帶著他老婆來(lái)了,他老婆是我隔壁宿舍的同班同學(xué),心里后悔極了。",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 記錄每條評(píng)論的標(biāo)記
img 頭像地址 統(tǒng)一設(shè)置默認(rèn)值
replyName 評(píng)論人昵稱 如果為null默認(rèn)是匿名用戶
beReplyName 被回復(fù)的評(píng)論人昵稱 只有二級(jí)評(píng)論才有該選項(xiàng) 同上
content 評(píng)論內(nèi)容
time 創(chuàng)建時(shí)間
address ip地址
osname 操作系統(tǒng)
browse 瀏覽器
replyBody 子評(píng)論
列表中每一個(gè)字典都是一條評(píng)論,如果有評(píng)論回復(fù)改評(píng)論,則replyBody又是一個(gè)列表,
列表里面嵌套對(duì)應(yīng)的回復(fù)評(píng)論,有多少條評(píng)論,replyBody列表中就有多少個(gè)字典
首頁(yè)留言頁(yè)面不設(shè)回復(fù)評(píng)論功能
管理后臺(tái)設(shè)置評(píng)論管理,在后臺(tái)回復(fù)評(píng)論
父評(píng)論需對(duì)應(yīng)子評(píng)論id
子評(píng)論beReplyName需對(duì)應(yīng)父評(píng)論replyName 缺一不可
http://www.useragentstring.com/?uas={{ua}}&getJSON=all
傳入ua字符串可獲得瀏覽器及系統(tǒng)信息json字符串
設(shè)置評(píng)論和留言支持emoji表情插入,防止訪客留言時(shí)輸入emoji表情導(dǎo)致報(bào)錯(cuò)
設(shè)置about_me的字段支持utf8mb4
ALTER table info_adminuser modify about_me text character set utf8mb4 collate utf8mb4_unicode_ci;
設(shè)置留言表的字段支持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;
設(shè)置留言表支持utf8mb4
ALTER TABLE info_gbook CHARSET=utf8mb4;
設(shè)置文章評(píng)論表支持utf8mb4
ALTER table info_comment modify content text character set utf8mb4 collate utf8mb4_unicode_ci;
設(shè)置庫(kù)支持utf8mb4
SET NAMES utf8mb4;
查看數(shù)據(jù)庫(kù)編碼類型
show variables like 'character%';
在SQL創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候設(shè)置CREATE DATABASE myblog CHARSET=UTF8mb4;
只有這樣mysql://user:pass@localhost /db?charset=utf8mb4才能生效
設(shè)置數(shù)據(jù)庫(kù)表編碼方式為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"
}
過(guò)濾尖括號(hào)防止xss
獲取ip問題
在部署的時(shí)候,因?yàn)?nginx 配置文件設(shè)置了
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;
因此通過(guò)
from flask import request
ip=request.headers['X-Forwarded-For']
就可以獲取真實(shí) ip
待補(bǔ)充
根據(jù)ip限制每個(gè)ip當(dāng)天只能留言10條,防止使用爬蟲或者第三方工具惡意發(fā)布評(píng)論
數(shù)據(jù)備份/數(shù)據(jù)恢復(fù)
添加前端顯示emoji表情功能,后臺(tái)文章添加emoji表情 已完成
添加celery異步發(fā)起瀏覽器信息獲取請(qǐng)求 暫時(shí)無(wú)法實(shí)現(xiàn),因?yàn)樾枰@取到瀏覽器信息才能寫入數(shù)據(jù)庫(kù)
文章評(píng)論管理
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。