flask 的 Blueprint,前后台蓝图注册

olei 4,524 views 2

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

flask的Blueprint,前后台蓝图注册

  • http://127.0.0.1:5000/admin

flask的Blueprint,前后台蓝图注册

发表评论 取消回复
表情 图片 链接 代码

  1. hellowordl
    hellowordl Lv 1

    这篇确实能给人启发;
    ps,你的根据 qq 查找昵称生成邮箱的功能似乎没用了。

    • olei
      olei 站长

      @hellowordl 好的,了解了,尽快修复~多谢提醒~

分享