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",这样,我们在adminhome中的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