flask的Blueprint,前后台蓝图注册

olei 4,405 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好的,了解了,尽快修复~多谢提醒~

分享