专业网站设计公司,免费的网站怎么建,网络售后服务,容桂网站建设目录9.蓝图9.1 概述9.2 蓝图项目结构结构1结构29.3 添加前缀9.4 静态文件9.5 模板9.6 构建 URLs9.蓝图
参考#xff1a;http://www.pythondoc.com/flask/blueprints.html
9.1 概述
Flask 使用了 蓝图 的概念在一个应用或者跨应用中构建应用组件以及支持通用模式。 蓝图很好…
目录9.蓝图9.1 概述9.2 蓝图项目结构结构1结构29.3 添加前缀9.4 静态文件9.5 模板9.6 构建 URLs9.蓝图
参考http://www.pythondoc.com/flask/blueprints.html
9.1 概述
Flask 使用了 蓝图 的概念在一个应用或者跨应用中构建应用组件以及支持通用模式。 蓝图很好地简化了大型应用工作的方式并提供给 Flask 扩展在应用上注册操作的核心方法。 一个 Blueprint 对象与 Flask 应用对象的工作方式很像但它确实不是一个应用 而是一个描述如何构建或扩展应用的 蓝图 。
蓝图的作用
把一个应用分解成一系列的蓝图。对于大型的应用是理想化的一个项目能实例化一个应用 初始化一些扩展以及注册一系列的蓝图。以一个 URL 前缀和/或子域在一个应用上注册蓝图。 URL 前缀/子域名中的参数即成为这个蓝图下的所有视图函数的共同的视图参数默认情况下。在一个应用中用不同的 URL 规则多次注册一个蓝图。通过蓝图提供模板过滤器、静态文件、模板和其它功能。一个蓝图不一定要实现应用或视图函数。初始化一个 Flask 扩展时在这些情况中注册蓝图。
9.2 蓝图项目结构
结构1
一般大小的项目使用此如下结构即可
flaskBluePrint01 项目
-app1 程序子应用-static 静态文件-templates 模板文件-views 视图模块-account.py 视图文件-admin.py-user.py- __init__.py 初始化文件注册应用实例化对象使用蓝图
-manage.py 项目启动文件步骤如下
1.创建app
app1/ __ init _ _.py
from flask import Flaskapp Flask(__name__)2.创建启动文件
manage.py
from app1 import appif __name__ __main__:app.run()3.创建子视图
app1/views/ account.py
from flask import Blueprintac Blueprint(ac, __name__)ac.route(/login)
def login():return loginac.route(/logout)
def logout():return logoutapp1/views/admin.py
from flask import Blueprintad Blueprint(ad, __name__)ad.route(/home)
def home():return homeapp1/views/ user.py
from flask import Blueprintus Blueprint(us, __name__)us.route(/info)
def info():return info4.注册蓝图 app/ __ init _ _.py
from flask import Flaskapp Flask(__name__)from .views import account
from .views import admin
from .views import userapp.register_blueprint(account.ac)
app.register_blueprint(admin.ad)
app.register_blueprint(user.us)结构2
对于一些大型项目可以使用以下数据结构 注:
1.如果在 templates 中存在和 templates_users 有同名模板文件时, 则系统会优先使用 templates 中的文件 ;
2.如果是前后端分离项目则不需要static和templates静态文件夹。
使用步骤如下
1.创建app
app/ __ init _ _.py
from flask import Flaskapp Flask(__name__)2.创建启动文件
manage.py
from app1 import appif __name__ __main__:app.run()3.创建子视图子应用和子视图
app1/admin/_ _ init_ _.py
from flask import BlueprintadBlueprint(ad, __name__)from . import viewsapp1/admin/views.py
from . import adad.route(/home)
def home():return homeapp1/web/_ _ init_ _.py
from flask import BlueprintwbBlueprint(wb, __name__)from .views import *app1/web/views.py
from . import wbwb.route(/login)
def login():return loginwb.route(/logout)
def logout():return logout4.注册蓝图
app/ __ init _ _.py
from flask import Flaskapp Flask(__name__)
app.debugTruefrom .admin import ad
from .web import wbapp.register_blueprint(ad)
app.register_blueprint(wb)9.3 添加前缀
如下修改app1|views| admin.py文件
from flask import Blueprintad Blueprint(ad, __name__, url_prefix/admin)ad.route(/home)
def home():return home也可以在注册时候添加如下
from flask import Flaskapp Flask(__name__)from .views import account
from .views import admin
from .views import userapp.register_blueprint(account.ac)
app.register_blueprint(admin.ad, url_prefix/admin)
app.register_blueprint(user.us)9.4 静态文件
一个蓝图可以通过 static_folder 关键字参数提供一个指向文件系统上文件夹的路 径来公开一个带有静态文件的文件夹。这可以是一个绝对路径也可以是相对于蓝图文件夹的路径:
adBlueprint(ad, __name__, static_folderstatic_admin)9.5 模板
指定蓝图使用的模板文件夹
adBlueprint(ad, __name__, static_folderstatic_admin, template_foldertemplates_admin)9.6 构建 URLs
当你想要从一个页面链接到另一个页面你可以像通常一个样使用 url_for() 函数只是你要在 URL 的末端加上蓝图的名称和一个点(.)作为前缀:
url_for(admin.index)此外如果你在一个蓝图的视图函数或是模板中想要从链接到同一蓝图下另一个端点 你可以通过对端点的只加上一个点作为前缀来使用相对的重定向:
url_for(.index)