您好,登錄后才能下訂單哦!
解壓密碼:yangqq.com
安裝過程:
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. 運行程序
粗略介紹一下功能,具體功能可以去演示站查看,因為沒有抽取模板,可能各頁面暫時效果會有所差距
文章評論,評論回復,評論點贊,評論管理暫時沒寫
文章點贊,文章打賞,個人名片,云詞標簽,
文章推薦(推薦分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異步發起瀏覽器信息獲取請求 暫時無法實現,因為需要獲取到瀏覽器信息才能寫入數據庫
文章評論管理
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。