Flask項目-循環導入及藍圖


 

  在學習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的錯誤。

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM