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