我使用的是python3.6
├── 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"
,这样,我们在admin
、home
中的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("/")
# coding:utf8
from app import app
if __name__ == "__main__":
app.run()
这里导入的是app文件夹中项目初始化的名称:
app
$ python manage.py
默认是http://127.0.0.1:5000
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。