用Flask写一个Blog

原文请点击这里

flask

前言

Django一段时间了,总是感觉Django有些笨重,而且各版本之间变化比较大。同时,我在windows7上安装的时候竟然不成功!于是重新拾起之前的Flask作为Django的补充。

Flask资源

这里罗列一下个人学习使用Flask的资源

写个博客练练手吧(又是博客。。。)

国人写的一个开源的博客程序(vmaig_blog)给了很大的启发,不过不支持多用户。数据层Model基本参照这个代码,略有调整。
博客将采用Mysql数据库,Markdown进行文章内容编辑,提供后台管理功能及缓存机制。

初步设计思路

思路

开发环境

  • 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

项目的结构

项目的结构主要参考了“探索 Flask”,其中有一些个人的调整。

blog/
    blog/    #项目的主目录
        static/    #静态文件
        templates/    #模板
        views/    #相关的view放入该目录
        __init__.py    #创建app,并加载相关组件
        caches.py    #缓存
        filter.py    #过滤器
        forms.py    #forms表单
        models.py    #model
        utils.py    #工具
    config/                 
        __init__.py
        default.py      #默认的配置值,可用于所有的环境或者被个人的环境给覆盖。
        development.py    #用于开发环境的配置值。这里你可能会指定本地数据库的 URI。
        production.py    #用于生产环境的配置值。在这里 DEBUG 一定要设置成 False。
        staging.py    #根据开发进度,你可能会有一个模拟生产环境,这个文件主要用于这种场景。
    instance/
        config.py    #这个文件包含了不应该出现在版本控制中的配置变量。 包含像 API 密钥以及包含密码的数据库URIs。
    init_db.py    #数据库初始化脚本
    run.py    #项目运行脚本
    requirements.txt  #项目所使用到的第三方库

部分代码说明

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'管理控制台', 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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,026评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,655评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,726评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,204评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,558评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,731评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,944评论 2 314
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,698评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,438评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,633评论 2 247
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,125评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,444评论 3 255
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,137评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,103评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,888评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,772评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,669评论 2 271

推荐阅读更多精彩内容

  • 22年12月更新:个人网站关停,如果仍旧对旧教程有兴趣参考 Github 的markdown内容[https://...
    tangyefei阅读 35,128评论 22 257
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    aimaile阅读 26,300评论 6 428
  • 环境管理管理Python版本和环境的工具。p–非常简单的交互式python版本管理工具。pyenv–简单的Pyth...
    MrHamster阅读 3,746评论 1 61
  • GitHub 上有一个 Awesome - XXX 系列的资源整理,资源非常丰富,涉及面非常广。awesome-p...
    若与阅读 18,511评论 4 418
  • 醒时,石英钟正在打点,我不知道现在几点了,只听见迷糊的当当声,眼际黢黑一片,脑子昏昏沉沉的....不愿意起身,懒在...
    晓二姑娘阅读 208评论 0 0