在學習flask時,肯定有許多人好奇,為什么一定要使用藍圖,而不能直接使用app應用程序對象導來導去,很多可能會說那是由於 循環導入的緣故,但是當我們通過url訪問視圖函數的時候,為什么會報404 not found的錯誤呢?下面詳細介紹一下:
在啟動文件 fresher.py文件中:圖一

圖一 fresher.py
在處理視圖邏輯的文件 book.py中,圖二

圖二 book.py
之所以會出現 循環導入且訪問時會出現404的錯誤:

這是由於:
在圖二即book.py --- 在該app中注冊的url和view_func與啟動應用程序的app(即圖一種實例化和啟動的app.run())根本不是同一個app對象。故到我們訪問應用程序時,在該app的url_map中是無法找到這種映射關系的。
那么為什么會出現兩個app對象呢?
這是由於在運行 fresher.py時,會實例化一個app對象(app1),然后導入 book.py,而在book.py中又導入fresher.py模塊,這時候在執行fresher.py時,又會實例化一個app(app2)。
而啟動應用程序的是app1,注冊路由和url則是app2,這樣就會出現404的錯誤。
