前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >flask的Blueprint,前后台蓝图注册

flask的Blueprint,前后台蓝图注册

原创
作者头像
禹都一只猫olei
发布2018-05-14 11:25:14
1.9K4
发布2018-05-14 11:25:14
举报

我使用的是python3.6

文件结构

  • 创建一个shizhan文件夹,根据flask的文件结构,在shizhan里面创建app文件夹,其他如下的结构
代码语言:txt
复制
├── 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为启动文件

代码逻辑

  • 定义前后台蓝图
  1. admin的为例,admin文件夹中
  2. __init__.py中代码如下:
代码语言:txt
复制
# coding:utf8
 
from flask import Blueprint
 
admin = Blueprint("admin",__name__)
 
import app.admin.views
  1. 对应的home__init__.py文件如下:
代码语言:txt
复制
# coding:utf8
 
from flask import Blueprint
 
home = Blueprint("home",__name__)
 
import app.home.views

注意,最后要import一下自家的视图views,让路由可以生效

  • 定义总的蓝图注册
  • app文件夹外面的__init__.py
代码语言:txt
复制
# 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文件夹里面的
代码语言:txt
复制
# coding:utf8
 
from . import home
 
# from flask import render_template,redirect,url_for
 
@home.route("/")
def index():
	return "<h1>这是前台页面</h1>"
  • 后台的views.py,就是admin文件夹里面的
代码语言:txt
复制
# 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文件
代码语言:txt
复制
# coding:utf8
 
from app import app
 
if __name__ == "__main__":
	app.run()

这里导入的是app文件夹中项目初始化的名称:app

  • 运行
代码语言:txt
复制
$ python manage.py

默认是http://127.0.0.1:5000

效果

  • http://127.0.0.1:5000
  • http://127.0.0.1:5000/admin

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件结构
  • 代码逻辑
  • 视图编写
  • 运行
  • 效果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档