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