用Flask寫一個(gè)Blog

原文請(qǐng)點(diǎn)擊這里

flask

前言

Django一段時(shí)間了瞬欧,總是感覺Django有些笨重贷屎,而且各版本之間變化比較大。同時(shí)艘虎,我在windows7上安裝的時(shí)候竟然不成功!于是重新拾起之前的Flask作為Django的補(bǔ)充唉侄。

Flask資源

這里羅列一下個(gè)人學(xué)習(xí)使用Flask的資源

寫個(gè)博客練練手吧(又是博客候生。同眯。。)

國(guó)人寫的一個(gè)開源的博客程序(vmaig_blog)給了很大的啟發(fā)唯鸭,不過不支持多用戶须蜗。數(shù)據(jù)層Model基本參照這個(gè)代碼,略有調(diào)整肿孵。
博客將采用Mysql數(shù)據(jù)庫(kù)唠粥,Markdown進(jìn)行文章內(nèi)容編輯疏魏,提供后臺(tái)管理功能及緩存機(jī)制停做。

初步設(shè)計(jì)思路

思路

開發(fā)環(huán)境

  • windows7
  • Editplus
  • python 2.7.9
  • Flask==0.10.1
  • Flask-SQLAlchemy==2.1
  • Flask-Login==0.3.2
  • flask-wtf==0.12
  • Flask-Admin==1.3.0
  • Flask-Cache==0.13.1
  • flask_debugtoolbar
  • Mistune
  • pygments
  • Pillow
  • mysql-python

項(xiàng)目的結(jié)構(gòu)

項(xiàng)目的結(jié)構(gòu)主要參考了“探索 Flask”,其中有一些個(gè)人的調(diào)整大莫。

blog/
    blog/    #項(xiàng)目的主目錄
        static/    #靜態(tài)文件
        templates/    #模板
        views/    #相關(guān)的view放入該目錄
        __init__.py    #創(chuàng)建app蛉腌,并加載相關(guān)組件
        caches.py    #緩存
        filter.py    #過濾器
        forms.py    #forms表單
        models.py    #model
        utils.py    #工具
    config/                 
        __init__.py
        default.py      #默認(rèn)的配置值,可用于所有的環(huán)境或者被個(gè)人的環(huán)境給覆蓋只厘。
        development.py    #用于開發(fā)環(huán)境的配置值烙丛。這里你可能會(huì)指定本地?cái)?shù)據(jù)庫(kù)的 URI。
        production.py    #用于生產(chǎn)環(huán)境的配置值羔味。在這里 DEBUG 一定要設(shè)置成 False河咽。
        staging.py    #根據(jù)開發(fā)進(jìn)度,你可能會(huì)有一個(gè)模擬生產(chǎn)環(huán)境赋元,這個(gè)文件主要用于這種場(chǎng)景忘蟹。
    instance/
        config.py    #這個(gè)文件包含了不應(yīng)該出現(xiàn)在版本控制中的配置變量。 包含像 API 密鑰以及包含密碼的數(shù)據(jù)庫(kù)URIs搁凸。
    init_db.py    #數(shù)據(jù)庫(kù)初始化腳本
    run.py    #項(xiàng)目運(yùn)行腳本
    requirements.txt  #項(xiàng)目所使用到的第三方庫(kù)

部分代碼說明

blog/__init__.py的代碼如下

#-*- coding: utf-8 -*-
from flask import Flask
from flask import render_template
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.login import LoginManager
from flask_wtf.csrf import CsrfProtect
from flask_admin import Admin
from flask.ext.cache import Cache

app = Flask(__name__,instance_relative_config=True)
app.config.from_object('config.development')
app.config.from_pyfile('config.py')

login_manager = LoginManager()
login_manager.session_protection = 'strong'
login_manager.init_app(app)

admin = Admin(app, name=u'管理控制臺(tái)', template_mode='bootstrap3', base_template='admin/blog_master.html')

db = SQLAlchemy(app)
CsrfProtect(app)
cache = Cache(app,config={'CACHE_TYPE': 'simple'})

from .views.site_bp import site_bp
app.register_blueprint(site_bp)
from .views.admin_bp import admin_bp
app.register_blueprint(admin_bp, url_prefix='/admin')

@app.errorhandler(404)
def page_not_found(error):
    return render_template('page_not_found.html'), 404

from .filter import *

run.py代碼如下

#-*- coding: utf-8 -*-
from flask_debugtoolbar import DebugToolbarExtension
from blog import app

if __name__ == '__main__':
    toolbar = DebugToolbarExtension(app)
    app.run(host='0.0.0.0',port=9000,debug=True)

instance/config.py代碼如下

#-*- coding: utf-8 -*-
SECRET_KEY = 'Sm9obiBTY2hyb20ga2lja3MgYXNz'
SQLALCHEMY_DATABASE_URI= "mysql://%s:%s@%s/%s" % ('root', '111111', 'localhost', 'flask_blog')

其中SECRET_KEY的生成

import os
os.urandom(24)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末媚值,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子护糖,更是在濱河造成了極大的恐慌褥芒,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嫡良,死亡現(xiàn)場(chǎng)離奇詭異锰扶,居然都是意外死亡献酗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門少辣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凌摄,“玉大人,你說我怎么就攤上這事漓帅∠强鳎” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵忙干,是天一觀的道長(zhǎng)器予。 經(jīng)常有香客問我,道長(zhǎng)捐迫,這世上最難降的妖魔是什么乾翔? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮施戴,結(jié)果婚禮上反浓,老公的妹妹穿的比我還像新娘。我一直安慰自己赞哗,他們只是感情好雷则,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肪笋,像睡著了一般月劈。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上藤乙,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天猜揪,我揣著相機(jī)與錄音,去河邊找鬼坛梁。 笑死而姐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的划咐。 我是一名探鬼主播拴念,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼尖殃!你這毒婦竟也來了丈莺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤送丰,失蹤者是張志新(化名)和其女友劉穎缔俄,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡俐载,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年蟹略,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遏佣。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挖炬,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出状婶,到底是詐尸還是另有隱情意敛,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布膛虫,位于F島的核電站草姻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏稍刀。R本人自食惡果不足惜撩独,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望账月。 院中可真熱鬧综膀,春花似錦、人聲如沸局齿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)项炼。三九已至担平,卻和暖如春示绊,著一層夾襖步出監(jiān)牢的瞬間锭部,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工面褐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拌禾,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓展哭,卻偏偏與公主長(zhǎng)得像湃窍,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匪傍,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 22年12月更新:個(gè)人網(wǎng)站關(guān)停您市,如果仍舊對(duì)舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,181評(píng)論 22 257
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個(gè) Awesome - XXX 系列...
    aimaile閱讀 26,480評(píng)論 6 427
  • 環(huán)境管理管理Python版本和環(huán)境的工具。p–非常簡(jiǎn)單的交互式python版本管理工具役衡。pyenv–簡(jiǎn)單的Pyth...
    MrHamster閱讀 3,792評(píng)論 1 61
  • GitHub 上有一個(gè) Awesome - XXX 系列的資源整理,資源非常豐富茵休,涉及面非常廣。awesome-p...
    若與閱讀 18,644評(píng)論 4 418
  • 醒時(shí),石英鐘正在打點(diǎn)榕莺,我不知道現(xiàn)在幾點(diǎn)了俐芯,只聽見迷糊的當(dāng)當(dāng)聲,眼際黢黑一片钉鸯,腦子昏昏沉沉的....不愿意起身吧史,懶在...
    曉二姑娘閱讀 221評(píng)論 0 0