前言:

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

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

 2,依赖库,工具的安装
python 3.6+版本以上,具体的依赖都放在requirements.txt里面,通过pip3进行安装即可
使用pycharm工具,可以直接[官网下载][2]
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-
#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/franknihao/p/7374964.html

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

#coding: utf-
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(), unique=True, nullable=False)
username = db.Column(db.String(), unique=True, nullable=False)
role = db.Column(db.String(), nullable=True)
password_hash = db.Column(db.String())
head_img = db.Column(db.String(), unique=False, nullable=True)
create_time = db.Column(db.DateTime, nullable=True,default=datetime.now) def verity_password(originPassword, password):
from apps.util import common
newpassword = common.md5(originPassword)
return password == newpassword def __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'] = True app = 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/xiaoblog
另外,微信也可以打开我的免费视频,效果不怎么样,其实看我文档也够了:

[1]: http://study.163.com/course/introduction.htm?courseId=1004091002#/courseDetail?tab=1
[2]: https://www.jetbrains.com/zh/pycharm/specials/pycharm/pycharm.html?utm_source=baidu&utm_medium=cpc&utm_campaign=cn-bai-br-pycharm-ex-pc&utm_content=pycharm-pure&utm_term=pycharm

flask-admin 快速打造博客 系列一的更多相关文章

  1. Django快速搭建博客系统

    Django快速搭建博客系统 一.开发环境 Windows 7(64bit) python 3.6   https://www.python.org/ Django 2.0  https://www. ...

  2. hexo零基础搭建博客系列(一)

    关于其他搭建 [hexo4快速搭建博客(二)更换主题](https://blog.csdn.net/weixin_41800884/article/details/103750634)[hexo4快速 ...

  3. hexo搭建博客系列(三)美化主题

    文章目录 其他搭建 1. 添加博客图标 2. 鼠标点击特效(二选一) 2.1 红心特效 2.2 爆炸烟花 3. 设置头像 4. 侧边栏社交小图标设置 5. 文章末尾的标签图标修改 6. 访问量统计 7 ...

  4. Hexo快速搭建博客

    1. 准备工作 ~ 安装node.js -> npm -> hexo-cli ~ 安装git -> 版本控制工具 2. 更换npm(nodejs package manager)源 ...

  5. 渣渣小本求职复习之路每天一博客系列——Unix&Linux入门(5)

    前情回顾:昨天简单地介绍了一下如何使用vi编辑器,例如命令模式和插入模式的切换,以及一些简单命令的讲解. —————————————————————————直接就开始吧———————————————— ...

  6. 渣渣小本求职复习之路每天一博客系列——数据库基础(MySQL)(5)

    前情回顾:昨天学习了MySQL中索引的设计与使用,还了解了一些常见的SQL注入攻击的手段以及防范方法,一般来说,在面试的时候如果不是要求比较高,基本就够用了. 今天碰见一个拿了TP-LINK的offe ...

  7. 渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(5)

    前情回顾:一篇短短的博客明显不能满足TCP和UDP这两个饥渴的汉子,而且还被应用协议占了一小半的篇幅.在昨天结束之后,相信大家都基本对TCP/IP协议栈的轮廓有一个大概的印象了,能够对整体有所把握. ...

  8. Microsoft SQL Server 混合云博客系列

    Microsoft 云操作系统愿景的核心支柱之一就是借助我们的混合云基础结构改造数据中心.在 Windows Azure 基础结构服务正式发布后的几个月里,我们一直在发布博客,介绍 Windows A ...

  9. Django快速创建博客,包含了整个框架使用过程,简单易懂

    创建工程                                                                                                 ...

随机推荐

  1. Modo教程合集44部

    Modo教程合集44部 教程说明:英文视频教程,大部分有工程文件,但不是全部 教程格式:Flv.MP4格式,大部分高清,确保能看清软件上的文字 发货方式:百度网盘下载链接(教程较多,可转存到自己的网盘 ...

  2. Django电商项目---完成用户中心(订单中心+收货地址)day7

    完成用户中心(收货地址) df_user/views.py df_user/urls.py templates/df_user/user_center_site.html 界面显示 完成用户中心(全部 ...

  3. log4.net 配置 - 自定义过滤器按LoggerName过滤日志

    自定义过滤器按LoggerName过滤日志,本来想使用 PropertyFilter 来实现,后来研究发现一直不能成功,源代码debug了一下获取一直为null,时间关系只好用 StringMatch ...

  4. Java设计模式之十 ---- 访问者模式和中介者模式

    前言 2018年已经过去,新的一年工作已经开始,继续总结和学习Java设计模式. 在上一篇中我们学习了行为型模式的解释器模式(Interpreter Pattern)和迭代器模式(Iterator P ...

  5. 如何取得select结果数据集的前10条记录。postgresql

    我用的是POSTGRESQL.select name from t_personal order by personal_id desc 我想取得上面结果数据的,前10条记录.SQL语句怎么改. 我记 ...

  6. QT+VS2013 1配置和安装

    相关参考:http://www.cnblogs.com/ranjiewen/p/5318768.html 1下载 VS2013 微软官网查找  https://www.visualstudio.com ...

  7. Rman将数据文件恢复到不同的路径

    RMAN> startup nomount connected to target database (not started)Oracle instance started Total Sys ...

  8. 乐观锁与悲观锁以及乐观锁的一种实现方式-CAS

    首先介绍一些乐观锁与悲观锁: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁.传统的关系型数据库里边就用到了很 ...

  9. Android 动态的给Button、TextView、ImageView等控件设置了background后,再设置padding属性时该属性不起作用

    也许大家遇到这样一个问题,有时我们根据业务需要在一个ViewGroup中动态的(程序运行过程中)添加View.例如添加Button,就需要给Button添加background.padding.mar ...

  10. 动手动脑(lesson 3)

    一· 答:本质上一样,但在内存分配时有区别.如下图: 二· 程序运行结果截图: 答案截图: 三· 四· 答:构造函数与参数个数不匹配. 五· 运行结果截图: 总结:所有类的变量都默认初始化为null, ...