目录结构如上图所示。

epay/init.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from epay.extendsions import db,login_manager,bootstrap,csrffrom epay.config import mysql_config
from epay.blueprints.admin import admin_bp
from epay.blueprints.auth import auth_bp
import pymysqldef create_app():app = Flask(__name__)app.secret_key = 'Innalhamdulillah.nahmaduhu.taalanastainubihi.wanastagfiruh!'register_extensions(app)register_blueprints(app)return appdef register_extensions(app):# 初始化 dbapp.config['SQLALCHEMY_DATABASE_URI'] = mysql_config['DIALECT']+'://'+mysql_config['USERNAME']+':'+mysql_config['PASSWORD']+'@'+mysql_config['HOST']+':'+mysql_config['PORT']+'/'+mysql_config['DATABASE']+'?charset=utf8'app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True# 初始化mysqlpymysql.install_as_MySQLdb()db.init_app(app)login_manager.init_app(app)bootstrap.init_app(app)csrf.init_app(app)def register_blueprints(app):# app.register_blueprint(blog_bp)app.register_blueprint(admin_bp, url_prefix='/admin')app.register_blueprint(auth_bp, url_prefix='/auth')

在 register_blueprints 中,register_blueprint() 就是注册blueprints,并设置路由路径,admin_bp 和 auth_bp是从blueprints/admin/init.py 和blueprints/auth.py导入 ,url_prefix是总的路径,例如/auth/xxx ,是负责用户登录方面的;/admin/xxxx ,是负责后台操作方面的。

blueprints/admin/init.py

from flask import Blueprint,current_app,render_template,url_for,redirectfrom flask_login import login_required, current_user
from epay.extendsions import db
from epay.models import User
from epay.blueprints.admin.order import order_bp
from epay.blueprints.admin.merchant import merchant_bpadmin_bp = Blueprint('admin',__name__)
admin_bp.register_blueprint(order_bp, url_prefix='/order')
admin_bp.register_blueprint(merchant_bp, url_prefix='/merchant')@admin_bp.route('/')
@admin_bp.route('/index')
@login_required
def index():return render_template('admin/index.html')

blueprints/auth.py

from flask import Blueprint,render_template,request,redirect,url_for,flash
from flask_login import login_user, logout_user, login_required, current_userfrom epay.models import Userimport hashlibfrom epay.forms import UserFormauth_bp = Blueprint('auth',__name__)@auth_bp.route('/login',methods=['POST','GET'])
def login():form = UserForm()if request.method == 'POST':email = request.form.get('email')  # args取get方式参数password = request.form.get('password')password = hashlib.md5(password.encode(encoding='utf-8')).hexdigest()user = User.query.filter_by(email=email,password=password).first()if user:flash('Welcome back.', 'info')login_user(user)return redirect(url_for('admin.index'))else:flash('Invalid username or password.', 'warning')return render_template('auth/login.html',form=form)elif request.method == 'GET':return render_template('auth/login.html',form=form)@auth_bp.route('/logout')
def logout():logout_user()return redirect(url_for('auth.login'))

由此可见,Blueprint 最简单的用法是这样:
先从falsk 中导入 Blueprint

from flask import Blueprint

然后定义一个 Blueprint

auth_bp = Blueprint('auth',__name__)

最后注册这个Blueprint

app.register_blueprint(auth_bp, url_prefix='/auth')

学习Flask之blueprint相关推荐

  1. python flask源码解析_用尽洪荒之力学习Flask源码

    [TOC] 一直想做源码阅读这件事,总感觉难度太高时间太少,可望不可见.最近正好时间充裕,决定试试做一下,并记录一下学习心得. 首先说明一下,本文研究的Flask版本是0.12. 首先做个小示例,在p ...

  2. 【Python 实战基础】Flask 蓝图 Blueprint 怎么用以及怎么集成 Bootstrap

    目录 一.简介 二.主要知识点 三.菜鸟实战 1.创建蓝图 2.注册蓝图 3.蓝图运行结果 ​4.下载和引入 Bootstrap 5.代码目录 6.Bootstrap 运行结果 一.简介 Flask ...

  3. 学习flask的网址

    学习flask的网址: http://www.bjhee.com 转载于:https://www.cnblogs.com/my-blogs-for-everone/p/9805344.html

  4. Flask 蓝图 Blueprint

    为什么需要蓝图? 我们在使用Flask框架,是从写单个文件,执行hello world开始的.我们在这单个文件中可以定义路由.视图函数.定义模型等等.但这显然存在一个问题:随着业务代码的增加,将所有代 ...

  5. flask使用Blueprint

    问题 一定要把项目路径导入到系统路径中 结构目录 api_blueprint.py from flask import Flask import sys import pathlib# 把当前目录加入 ...

  6. flask学习笔记之blueprint

    blueprint的作用 blueprint最主要的是解决路由的问题 创建blueprint的步骤 创建blueprint 注册blueprint 最简代码示例 创建blueprint from fl ...

  7. 学习Flask主站源码,原来可以这样学!

    flask-website,是flask曾经的主站源码,使用flask制作,包含模版渲染,数据库操作,openID认证, 全文检索等功能.对于学习如何使用flask制作一个完备的web站点,很有参考价 ...

  8. python前端学习-------Flask框架基础(建议收藏)

    Flask框架基础 下载并安装Flask框架 Flask基础 第一个Flask应用 开启调试模式 路由 变量规则 构造URL HTTP方法 模板 语法格式 模板变量 控制结构 条件控制语句 `if` ...

  9. 【flask】Blueprint蓝图

    目录 一.蓝图的作用 二.蓝图的基本使用: 三.注意事项 一.蓝图的作用 分层隔离(解耦):避免与项目同名的py文件里面有过多的指定不同内容的app.rout()会堆叠在同此文件.假设是文件处理系统里 ...

最新文章

  1. git版本分支和分支、分支和主分支切换
  2. 音视频技术开发周刊 | 159
  3. 前端学习(2853):简单秒杀系统学习之页面事件
  4. Unix环境高级编程学习笔记(五)
  5. java工作中mq应用多吗_RabbitMQ消息中间件在工作中的应用场景
  6. 《大道至简——软件工程实践者的思想》阅读笔记之一
  7. 怎么让jsp中的按钮置灰不能使用_拆解按钮规范
  8. 有效需求预测的四大优势
  9. 常见算法的英文命名(排序、查找)
  10. 使用 virtualBox 安装 ubuntu
  11. 【死磕 Spring】----- IOC 之 Factory 实例化 bean
  12. 微服务等于 Spring Cloud?了解微服务架构和框架
  13. 双绞线接头(RJ45)连接方法详解
  14. 基于android的教育机构家校通系统app
  15. 团队作业第六次——团队Github实战训练
  16. 肿瘤的分型、分级和分期
  17. 1.6W Star 的「黑魔法」,非常实用!
  18. dSYM文件解析与分析
  19. 学习Java用什么软件?
  20. 谈谈对代码审查Code Review的简单认识

热门文章

  1. luoguP3397 地毯
  2. The Shawshank Redemption-4
  3. ssm课程答疑系统的设计与实现毕业设计源码261620
  4. python作业.创建两个文本框,一个按钮。第 1 个文本框绑定任意键事件,敲击键盘任意可显示字符,在交互窗口中显示该字符;第 2 个文本框绑定<a>键事件,敲击键盘 a 字符,在交互窗口中显示 10
  5. html2canvas解决图片空白,网络图片跨域
  6. Proxifier Socks5 代理(内网访问、远程办公)
  7. 微软20日将验证Windows与Office盗版将黑屏
  8. 数字信号处理(3)- z变换
  9. MySQL:使用PMM进行性能监控
  10. python爬虫-电影数据抓取