文件结构
创建一个 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"
,这样,我们在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("/")
运行
- 需要编写 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
- http://127.0.0.1:5000/admin
本文作者为 olei,转载请注明。
这篇确实能给人启发;
ps,你的根据 qq 查找昵称生成邮箱的功能似乎没用了。
@hellowordl 好的,了解了,尽快修复~多谢提醒~