学习Flask之blueprint
目录结构如上图所示。
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相关推荐
- python flask源码解析_用尽洪荒之力学习Flask源码
[TOC] 一直想做源码阅读这件事,总感觉难度太高时间太少,可望不可见.最近正好时间充裕,决定试试做一下,并记录一下学习心得. 首先说明一下,本文研究的Flask版本是0.12. 首先做个小示例,在p ...
- 【Python 实战基础】Flask 蓝图 Blueprint 怎么用以及怎么集成 Bootstrap
目录 一.简介 二.主要知识点 三.菜鸟实战 1.创建蓝图 2.注册蓝图 3.蓝图运行结果 4.下载和引入 Bootstrap 5.代码目录 6.Bootstrap 运行结果 一.简介 Flask ...
- 学习flask的网址
学习flask的网址: http://www.bjhee.com 转载于:https://www.cnblogs.com/my-blogs-for-everone/p/9805344.html
- Flask 蓝图 Blueprint
为什么需要蓝图? 我们在使用Flask框架,是从写单个文件,执行hello world开始的.我们在这单个文件中可以定义路由.视图函数.定义模型等等.但这显然存在一个问题:随着业务代码的增加,将所有代 ...
- flask使用Blueprint
问题 一定要把项目路径导入到系统路径中 结构目录 api_blueprint.py from flask import Flask import sys import pathlib# 把当前目录加入 ...
- flask学习笔记之blueprint
blueprint的作用 blueprint最主要的是解决路由的问题 创建blueprint的步骤 创建blueprint 注册blueprint 最简代码示例 创建blueprint from fl ...
- 学习Flask主站源码,原来可以这样学!
flask-website,是flask曾经的主站源码,使用flask制作,包含模版渲染,数据库操作,openID认证, 全文检索等功能.对于学习如何使用flask制作一个完备的web站点,很有参考价 ...
- python前端学习-------Flask框架基础(建议收藏)
Flask框架基础 下载并安装Flask框架 Flask基础 第一个Flask应用 开启调试模式 路由 变量规则 构造URL HTTP方法 模板 语法格式 模板变量 控制结构 条件控制语句 `if` ...
- 【flask】Blueprint蓝图
目录 一.蓝图的作用 二.蓝图的基本使用: 三.注意事项 一.蓝图的作用 分层隔离(解耦):避免与项目同名的py文件里面有过多的指定不同内容的app.rout()会堆叠在同此文件.假设是文件处理系统里 ...
最新文章
- git版本分支和分支、分支和主分支切换
- 音视频技术开发周刊 | 159
- 前端学习(2853):简单秒杀系统学习之页面事件
- Unix环境高级编程学习笔记(五)
- java工作中mq应用多吗_RabbitMQ消息中间件在工作中的应用场景
- 《大道至简——软件工程实践者的思想》阅读笔记之一
- 怎么让jsp中的按钮置灰不能使用_拆解按钮规范
- 有效需求预测的四大优势
- 常见算法的英文命名(排序、查找)
- 使用 virtualBox 安装 ubuntu
- 【死磕 Spring】----- IOC 之 Factory 实例化 bean
- 微服务等于 Spring Cloud?了解微服务架构和框架
- 双绞线接头(RJ45)连接方法详解
- 基于android的教育机构家校通系统app
- 团队作业第六次——团队Github实战训练
- 肿瘤的分型、分级和分期
- 1.6W Star 的「黑魔法」,非常实用!
- dSYM文件解析与分析
- 学习Java用什么软件?
- 谈谈对代码审查Code Review的简单认识
热门文章
- luoguP3397 地毯
- The Shawshank Redemption-4
- ssm课程答疑系统的设计与实现毕业设计源码261620
- python作业.创建两个文本框,一个按钮。第 1 个文本框绑定任意键事件,敲击键盘任意可显示字符,在交互窗口中显示该字符;第 2 个文本框绑定<a>键事件,敲击键盘 a 字符,在交互窗口中显示 10
- html2canvas解决图片空白,网络图片跨域
- Proxifier Socks5 代理(内网访问、远程办公)
- 微软20日将验证Windows与Office盗版将黑屏
- 数字信号处理(3)- z变换
- MySQL:使用PMM进行性能监控
- python爬虫-电影数据抓取