flask的Blueprint,前后台蓝图注册
时间:2022-05-30
本文章向大家介绍flask的Blueprint,前后台蓝图注册,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
文件结构
创建一个shizhan文件夹,根据flask的文件结构,在shizhan里面创建app文件夹,其他如下的结构
├── app
│ ├── __init__.py
│ ├── admin
│ │ ├── __init__.py
│ │ └── views.py
│ ├── home
│ │ ├── __init__.py
│ │ └── views.py
│ ├── models.py
│ ├── static
│ └── templates
│ ├── admin
│ └── home
└── manage.py
解释:
admin为后台,home为前台 static为保存css、js等的静态文件夹 templates为前后台页面html文件 models.py为数据库设计文件 views.py为视图文件 __init__.py为初始化文件,在文件夹内,表示属于一个包(我这么叫) manage.py为启动文件
代码逻辑
定义前后台蓝图
- 以admin的为例,admin文件夹中
- 在
__init__.py
中代码如下:
# coding:utf8
from flask import Blueprint
admin = Blueprint("admin",__name__)
import app.admin.views
- 对应的home的__init__.py文件如下:
# coding:utf8
from flask import Blueprint
home = Blueprint("home",__name__)
import app.home.views
注意,最后要import一下自家的视图views,让路由可以生效
定义总的蓝图注册
- app文件夹外面的
__init__.py
# coding:utf8
from flask import Flask, render_template
app = Flask(__name__)
app.debug = True
from app.admin import admin as admin_blueprint
from app.home import home as home_blueprint
app.register_blueprint(home_blueprint)
app.register_blueprint(admin_blueprint, url_prefix="/admin")
/admin
的路由在注册的时候设置,如上面的url_prefix="/admin"
,这样,我们在admin
、home
中的views.py
中就可以直接写其他的路由了,不用再判断是否再/admin
之类的 这样,前后台的蓝图就搞定了
视图编写
简单的编写一个例子
- 前台的views.py,就是
home
文件夹里面的
# coding:utf8
from . import home
# from flask import render_template,redirect,url_for
@home.route("/")
def index():
return "<h1>这是前台页面</h1>"
- 后台的views.py,就是
admin
文件夹里面的
# coding:utf8
from . import admin
# from flask import render_template, redirect, url_for
@admin.route("/")
def index():
return "<h1>这是管理页面</h1>"
注意:
蓝图中定义了前台蓝图名字是
home
,后台的为admin
,所以写路由的装饰器的时候,是以他们为首的,比如@admin.route("/")
运行
- 需要编写manage.py文件
# coding:utf8
from app import app
if __name__ == "__main__":
app.run()
这里导入的是app文件夹中项目初始化的名称:
app
- 运行
$ python manage.py
默认是http://127.0.0.1:5000
效果
- http://127.0.0.1:5000
- http://127.0.0.1:5000/admin
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 4.表格-HTML基础
- 2.语义化-HTML进阶
- MATLAB 与 C 语言的混合编程
- leetcode树之二叉树的层平均值
- C++雾中风景15:聊聊让人抓狂的Name Mangling
- 【Java】15 File 类
- seaborn更高效的统计图表制作工具
- 牛客2019跨年AK场题解(一)
- qiankun proxySand 沙箱
- MATLAB 与 C 语言的混合编程实战之辛普森积分法、自适应辛普森积分
- Java那些事之JDK环境配置及集成开发环境Eclipse安装
- 敲代码、作诗、写论文无所不能?史上最大AI模型GPT-3霸榜Github
- 数据结构实验——校园导游 实现最小生成树+最短路
- Salesforce LWC学习(二十六) 简单知识总结篇三
- 【Java】13 异常