文件结构
创建一个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好的,了解了,尽快修复~多谢提醒~