前言:

我想分享flask+flask-admin快速打造博客的详细教程,可是发现网易课堂已经有相应的免费课堂了,所以就不打算一点一滴的在这里做笔记,分享这些东西了。所以我主要集中在flask-admin使用上的讲解。如果有需要flask可以去参考一下网易的flask课程,其实想弄一个讲堂的视频教程,可是没有足够好的设备,而且录制视频更像是在表演,感觉一下子适应不过来。可我还是录了一套视频效果不是很好,稍后想分享给大家。

1,准备知识

Flask-admin是基于flask框架的,所以你必须先对flask有一个整体的认识和学习,至少需要知道怎么使用请求,模板响应,数据库使用等等。
1)route 请求的路由规则
2)sqlalchemy 或者其他数据框架的增删改
3)jinja2框架 模板响应的使用

2,依赖库,工具的安装

python 3.6+版本以上,具体的依赖都放在requirements.txt里面,通过pip3进行安装即可
使用pycharm工具,可以直接官网下载
Pycharm非常简单易用,但需要注册码,直接百度搜索:pycharm注册码2017
然后选择一个注册码,就可以激活;或者输入激活的url路径也可以

3,搭建flask web

1)我们来搭建一个flask的使用框架,如果还没有入门的同学,可以借此入一下门。
新建一个项目:file->new project…..

在控制台输入:python cleanblog.py 启动服务

2)目录结构改造
首先,我们建立apps的python包,在apps里面在建一个blog的python包,这样设置的目的就是把所以功能模块都放在apps下面;
其次,把static和template目录拉到apps目录下;
在根目录,增加config.py 是配置文件,用于配置环境变量的
gendb.py是基于flask-sqlalchemy来生成数据库表的

3)整合改造

3.1 整合blueprint
蓝图相当于命名空间,前端路由过来的请求就会被蓝图的地址多映射到不同的处理函数上去。
在blog目录下的__init__.py 文件输入:

from flask import Blueprint
blog = Blueprint('main', __name__)
from . import views

然后再apps的__init__.py里注册蓝图:

# 蓝图
from .blog import blog as main_blueprint
app.register_blueprint(main_blueprint)

其实蓝图的注册是 app.register_blueprint(main_blueprint, url_prefix='/XXXX')
这里的XXXX是请求到该模块下的路径前缀。
弄个测试例子:
blog 目录下的views.py有个函数:

# coding:utf-8
#views.py
from . import blog@blog.route("/baseinfo",methods=['GET'])
def getbaseinfo():return "zhe是 测试页面"

那么请求路径就是 www.mxxx.com/XXXX/baseinfo

3.2 国际化
国际化使用的babelx,一个比较老的库,不是很理想,如果自定义后台页面也许就不需要这么一个库;而且现在babelx的版本要跟flask对得上,不然会有各种异常的
需要在config.py 配置:
BABEL_DEFAULT_LOCALE = 'zh_hans_CN'
然后在apps的__init__.py里注册:

#国际化
from flask_babelex import Babel
babel = Babel(app)

3.3 本地日期渲染
使用flask_moment 来渲染模板的日期,需要注册到app:
moment.init_app(app)

然后再模板就可以使用:

{% block scripts %}{{ super() }}{{ moment.include_moment() }}  //在前端中通过方法引用moment.js文件{{ moment.locale('zh-cn') }}  //将moment.js本地化,否则渲染出来的时间日期都是英文的
{% endblock %}{% block page_content %}{{ super() }}<h3>Time now is {{ moment(current_time).format('LLL') }}</h3><hr>
{% endblock %}

可参考:https://www.cnblogs.com/frank...

4.5 整合sqlalchemy
这是我们的一个重点:
第一步:注册:
db = SQLAlchemy()
然后注册到app里:
db.init_app(app)
第二步:定义model
在apps目录建立一个models.py文件,就可以在里面定义模型了:

#coding: utf-8
import hashlib
from datetime import datetime
from . import db#用户表
class User(db.Model):id = db.Column(db.Integer, primary_key=True)email = db.Column(db.String(64), unique=True, nullable=False)username = db.Column(db.String(64), unique=True, nullable=False)role = db.Column(db.String(64), nullable=True)password_hash = db.Column(db.String(128))head_img = db.Column(db.String(128), unique=False, nullable=True)create_time  = db.Column(db.DateTime, nullable=True,default=datetime.now)def verity_password(originPassword, password):from apps.util import commonnewpassword = common.md5(originPassword)return password == newpassworddef __repr__(self):return '<User %r>' % self.username

第三步:生成表
gendb.py 主要是生成数据库表脚本的,可以不用,你直接去数据库生成也可以的

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from apps import  create_app
#app.config.from_object('app.config')# configuration
# SQLALCHEMY_DATABASE_URI = 'mysql://root:123456@117.48.202.102/flaskAdmin'
# app.config['SQLALCHEMY_DATABASE_URI'] = SQLALCHEMY_DATABASE_URI
# app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = Trueapp = create_app('config.py')from apps.models import  db
#db.init_app(app)
migrate = Migrate(app,db)
manager = Manager(app)
manager.add_command('db',MigrateCommand)if __name__ == '__main__':manager.run()"""
python  gendb.py db init
python  gendb.py db migrate
python  gendb.py db upgrade
"""

其实这个文件是可以通过,然后直接在cmd控制台输入:
Python gendb.py db init (仅第一次使用的时候需要,生成migrations的目录包)
python gendb.py db migrate (生成数据表)
python gendb.py db upgrade (同步到数据库)

第一版就先搭建到这里,接下来我们进入整合flask-admin

github地址 :https://github.com/minsons/xi...
另外,微信也可以打开我的免费视频,效果不怎么样,其实看我文档也够了:

flask-admin 快速打造博客 系列一相关推荐

  1. Python Flask框架-开发简单博客-认证蓝图

    作者:Eason_LYC 悲观者预言失败,十言九中. 乐观者创造奇迹,一次即可. 一个人的价值,在于他所拥有的.可以不学无术,但不能一无所有! 技术领域:WEB安全.网络攻防 关注WEB安全.网络攻防 ...

  2. 个人博客系列【Hexo】-实现在百度中搜索到自己的博客

    目录 1.添加站点 2.选择协议头"http:// ",填写网站域名,点击下一步: 3.设置站点领域,这里选择信息技术(按需选择),点击下一步: 4.验证网站,选择CNAME验证, ...

  3. 自动驾驶入门(一):博客系列简介

    极简自动驾驶感知入门 1. 课程介绍 近年来,自动驾驶的概念频繁出现在各大新闻媒体和社交网络上,引起了广泛的关注与讨论.同时随着新造车势力(特斯拉.蔚来.小鹏.理想等)和自动驾驶独角兽公司(图森.Mo ...

  4. 在csdn上如何快速转载博客

    在CSDN上如何快速转载博客 小黄花的故事 2017-08-10 20:29:35 1194 收藏 1 最后发布:2017-08-10 20:29:35首发:2017-08-10 20:29:35 分 ...

  5. 看板方法不是方法论 | David博客系列 | Agilean学院出品

    这篇David博客系列文章阐述了看板方法反模式之"Kanban是方法论",由Agilean学院刘永鹏翻译.张明评审,李淳审校 使用看板方法让我们的产品质量一团糟!因为我们不再做测试 ...

  6. 5条快速优化博客的SEO技巧

    如果你有博客或为有博客的人写东西的话,那你可能听说过SEO.没错,我们正在谈论搜索引擎优化. 优化博客可以使它在Google上排名更高,吸引更多流量,并最终使网站所有者赚钱更多,变现途径更多. 你可以 ...

  7. 【Hexo搭建GitPage博客系列】02.环境搭建

    转载声明:商业转载请联系作者获得授权,非商业转载请注明出处.原文来自 © 呆萌钟[Hexo搭建GitPage博客系列]02.环境搭建 前言 Hexo搭建博客需要基于Node.js环境,而且依赖于Git ...

  8. 看板流程? | David博客系列 | Agilean学院出品

    这篇David博客系列文章阐述了看板方法反模式之"遵循Kanban流程",由Agilean学院郑美艳,颜秦进翻译,李淳审校 我们在遵循看板流程...... 问题是:没有所谓的&qu ...

  9. (转载) 如何利用github打造博客专属域名

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/51319147: 本文出自:[张鸿洋的博客] 一.概述 哈,本篇博客不属于And ...

最新文章

  1. C++设置每屏显示的行数简易办法
  2. 学python有必要买书吗-要不要学python
  3. 中心扩散算法--最长回文子串
  4. vue 实现ps图片编辑_帮你解锁一个新技能,opencv完美媲美PS,图片PS,我们代码实现...
  5. Implementation of WC in JAVA
  6. Hive之数据倾斜的原因和解决方法
  7. java编程基础素数实验报告,JAVA 基础编程练习题1 (输出素数)
  8. 6-2-2:STL之string——string的模拟实现
  9. PHP过滤HTML标签的三种方法
  10. 利用通用权限管理系统底层解决数据从不同库的导入导出问题
  11. DevExtreme移动开发框架
  12. C# DataGridView 全选 反选
  13. Baxter实战 (四)ubuntu14.04安装kinect V2
  14. 抖音自动上号源码分享
  15. i219v微星 驱动_intel英特尔网卡驱动下载-intel英特尔i217/i218/i219系列网卡驱动电脑版 - 极光下载站...
  16. java 目录遍历漏洞_路径遍历 漏洞修复
  17. PRA006/PRA010 开发板,Quartus Altera JTAG 配置,以及常见故障解决
  18. STM32 自定义HID USB设备的实现
  19. android开发多国语言对照表
  20. BLDC 电机的反电动势电压仿真

热门文章

  1. spark SQL学习(综合案例-日志分析)
  2. Hibernate总结2 API和配置文件
  3. shell的相关知识(变量、脚本定义)
  4. linux下java还原mysql数据库
  5. java的初始化顺序
  6. 产品设计体会(6014)商业智能的尝试
  7. 快速撑握C#知识点系列之(struct)结构
  8. 从Facebook看大数据存储怎么选
  9. 高性能Sqlite存储模型对象解密
  10. Web API With AJAX: Handle Session in Web API