创建一个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为启动文件
__init__.py
中代码如下:# coding:utf8
from flask import Blueprint
admin = Blueprint("admin",__name__)
import app.admin.views
# coding:utf8
from flask import Blueprint
home = Blueprint("home",__name__)
import app.home.views
注意,最后要import一下自家的视图views,让路由可以生效
__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
之类的 这样,前后台的蓝图就搞定了
简单的编写一个例子
home
文件夹里面的# coding:utf8
from . import home
# from flask import render_template,redirect,url_for
@home.route("/")
def index():
return "<h1>这是前台页面</h1>"
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("/")
# coding:utf8
from app import app
if __name__ == "__main__":
app.run()
这里导入的是app文件夹中项目初始化的名称:
app
$ python manage.py
默认是http://127.0.0.1:5000