摘要:藍圖的簡單介紹藍圖概念的簡單介紹用藍圖的概念來在一個應(yīng)用中或跨應(yīng)用制作應(yīng)用組件和支持通的模式。以前綴和或子域名,在應(yīng)用上注冊一個藍圖。前綴子域名中的參數(shù)即成為這個藍圖下的所有視圖函數(shù)的共同的視圖參數(shù)默認情況下。
flask藍圖的簡單介紹
藍圖概念的簡單介紹:
Flask 用 藍圖(blueprints) 的概念來在一個應(yīng)用中或跨應(yīng)用制作應(yīng)用組件和支持通的模式。藍圖很好地簡化了大型應(yīng)用工作的方式,并提供給 Flask 擴展在應(yīng)用上注冊操作的核心方法。一個 Blueprint 對象與 Flask 應(yīng)用對象的工作方式很像,但它確實不是一個應(yīng)用,而是一個描述如何構(gòu)建或擴展應(yīng)用的 藍圖 。
下面是我demo結(jié)構(gòu):
把一個應(yīng)用分解為一個藍圖的集合。這對大型應(yīng)用是理想的。一個項目可以實例化一個應(yīng)用對象,初始化幾個擴展,并注冊一集合的藍圖。
以 URL 前綴和/或子域名,在應(yīng)用上注冊一個藍圖。 URL 前綴/子域名中的參數(shù)即成為這個藍圖下的所有視圖函數(shù)的共同的視圖參數(shù)(默認情況下)。
在一個應(yīng)用中用不同的 URL 規(guī)則多次注冊一個藍圖。
通過藍圖提供模板過濾器、靜態(tài)文件、模板和其它功能。一個藍圖不一定要實現(xiàn)應(yīng)用或者視圖函數(shù)。
初始化一個 Flask 擴展時,在這些情況中注冊一個藍圖。 引用自官方文檔
在我看來,有了藍圖可以將一個應(yīng)用注冊成很多模塊,方便管理,和添加擴展。
我的第一個藍圖導(dǎo)入相應(yīng)的模塊,Blueprint中的三個參數(shù),第一個可以自己隨意命令,第二個一般都是__name__,
他指定了當前的flask應(yīng)用,也就是當前我的app文件夾(也是一個包),第三個參數(shù)指定你存放,模板文
件的位置,這個主要看你你應(yīng)用的目錄結(jié)構(gòu),我喜歡只存放一個templates目錄在app文件夾下,然后
使用相對路徑。
from flask import Blueprint, render_template, abort, redirect, url_for from jinja2 import TemplateNotFound blog = Blueprint("blog", __name__, template_folder="../templates")
@blog.route("/index") def index(): try: return render_template("blog.html") except TemplateNotFound: abort(404)
@blog.route("/welcome") def welcome(): return "welcome to blog"
當時這樣你并不能訪問網(wǎng)頁,因為你還沒有注冊藍圖,藍圖不是即插即用的
注冊藍圖在注冊前一定要導(dǎo)入相應(yīng)的藍圖,如代碼中的admin和blog。
from flask import Flask from view.addmin import admin from view.blog import blog
app = Flask(__name__) app.register_blueprint(blog, url_prefix="/blog") app.register_blueprint(admin, url_prefix="/admin") if __name__ == "__main__": app.run(debug=True) # from werkzeug.serving import run_simple # run_simple("localhost", 5000, app)
訪問相應(yīng)的頁面時,一定要將url_prefix中的前綴加上,比如要訪問blog.html中的內(nèi)容,要寫成http://localhost/blog/index 的形式。
構(gòu)造URL要想從一個頁面跳轉(zhuǎn)到另一個頁面,通常是redirect和url_for配合使用,由于我們加入了藍圖,在訪問時
我們可以更加輕松
url_for("blog.index")
具體代碼如下:
from flask import Blueprint, render_template, abort, redirect, url_for from jinja2 import TemplateNotFoun blog = Blueprint("blog", __name__, template_folder="../templates")
@blog.route("/index") def index(): try: return redirect(url_for("blog.welcome")) except TemplateNotFound: abort(404)
@blog.route("/welcome") def welcome(): return "welcome to blog"
當你訪問/blog/index的頁面時,會自動幫你跳轉(zhuǎn)到/blog/welcome的頁面中。
以上大部分內(nèi)容都借鑒自官方文檔,如果有不明白的地方,可以自行查閱。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/40918.html
摘要:月份發(fā)布了第版,收到不少網(wǎng)友的良好建議,所以又抽空進行了完善,當然也拖了不少時間。本書主要介紹的基本使用,這也是我一開始在學(xué)習(xí)過程中經(jīng)常用到的。第章實戰(zhàn),介紹了如何開發(fā)一個簡單的應(yīng)用。聲明本書由編寫,采用協(xié)議發(fā)布。 showImg(https://segmentfault.com/img/remote/1460000007484050?w=200&h=152); 書籍地址 head-f...
摘要:眾數(shù)周知,文檔的編寫和整理工作將花費巨大精力甚至不亞于代碼的編寫,因此在時間緊任務(wù)重的情況下,文檔是首先被忽略的工作。是一款非常流行的文檔管理交互工具,適用于在團隊中的管理,以及服務(wù)組件對接。而我們目前需要的是獲取文檔或文件。 本文最先發(fā)布在博客:https://blog.ihypo.net/152551... Flask 是一個以自由度高、靈活性強著稱的 Python Web 框架...
摘要:被定義在包的構(gòu)造函數(shù)中的應(yīng)用程序工廠函數(shù)會在示例中展示。這個構(gòu)造函數(shù)導(dǎo)入大部分當前需要使用的擴展,但因為沒有應(yīng)用程序?qū)嵗跏蓟鼈儯梢员粍?chuàng)建但不初始化通過不傳遞參數(shù)給它們的構(gòu)造函數(shù)。而應(yīng)用程序范圍內(nèi)的錯誤處理則必須使用。 雖然小型web應(yīng)用程序用單個腳本可以很方便,但這種方法卻不能很好地擴展。隨著應(yīng)用變得復(fù)雜,在單個大的源文件中處理會變得問題重重。 與大多數(shù)其他web框架不同,F(xiàn)l...
摘要:注冊靜態(tài)路由和應(yīng)用對象不同,藍圖對象創(chuàng)建時不會默認注冊靜態(tài)目錄的路由。 首選:flask藍圖是什么? flask運行web程序的運行是通過實例化對象app.run()來運行的,那么會出現(xiàn)在一個.py文件里面定義很多的視圖函數(shù),即不方便代碼管理,又不利于后期的維護.所以在flask出現(xiàn)了藍圖(Blueprint),可以使程序模塊化,就像django的一個個模塊一樣來獨立編程。那么這個藍圖...
摘要:詳細信息可以看下這個問題先在說下我的部署方式使用部署配置文件啟動方式總結(jié)試用了下,把之前的一個聊天機器人從改成了。預(yù)告下一篇將介紹如何使用一步一步創(chuàng)建一個聊天機器人。 簡介 Sanic 是一個和類Flask 的基于Python3.5+的web框架,它編寫的代碼速度特別快。除了像Flask 以外,Sanic 還支持以異步請求的方式處理請求。這意味著你可以使用新的 async/await ...
閱讀 2556·2021-09-22 15:25
閱讀 2963·2021-09-14 18:03
閱讀 1212·2021-09-09 09:33
閱讀 1700·2021-09-07 09:59
閱讀 2930·2021-07-29 13:50
閱讀 1500·2019-08-30 15:44
閱讀 1715·2019-08-29 16:22
閱讀 1287·2019-08-29 12:49