美文网首页
用Flask写一个Blog

用Flask写一个Blog

作者: 老男人一枚的博客 | 来源:发表于2017-10-10 18:27 被阅读964次

原文请点击这里

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)

相关文章

网友评论

      本文标题:用Flask写一个Blog

      本文链接:https://www.haomeiwen.com/subject/dwrbyxtx.html