Flask大型專案框架結構理解
導語:前段時間學習狗書的flask大型專案框架結構的時候有點混亂,到現在也知道是個啥了,想著,把關係理一理,寫一篇部落格。也方便後來學習的人查閱。以下是我建立專案時候的結構。
myproject
---->app 專案資料夾
---->static 靜態資源
---->templates 網頁模板
---->main 專案主檔案資料夾
---->__init__.py 專案主檔案初始化
---->views.py 專案檢視
---->errors.py 專案錯誤網頁檢視
---->forms.py 專案表單檔案
---->models 專案資料庫
---->emails 專案郵箱
---->__init__.py 專案初始化資訊
---->config.py 專案配置檔案
---->manage.py 專案管理檔案
根據自己喜好可以自由配置。首先在資料庫中,我們可以配置3個config檔案,分別用於開發,測試和上線,然後把這三個轉化為字典結構,便於呼叫。如下
1 2 3 4 5 6 |
|
配置資訊寫好之後,便開始開發了。由於結構的問題,使得我們需要使用藍圖來進行開發。我們在app/main/__init__中,寫如下程式碼
from flask import Blueprint main = Blueprint(“main”,__name__) #"main" 為這個藍圖的名字 from . import view,error #匯入需要用到藍圖的兩個檔案
建立好了藍圖之後,我們還需要在app/__init__中完成對藍圖的註冊,程式碼如下:
from app.main import main as main_blueprint app.register_blueprint(main_blueprint)
看到app,是不是有人就很好奇了,這個app是怎麼來的啊,其實就跟我們以前寫的一樣,狗書上用工廠模式在這個__init__中,不僅用於註冊,還用於呼叫配置資訊和初始化第三方擴充套件。完整程式碼如下:
from flask import Flask, render_template from flask.ext.mail import Mail mail = Mail() def create_app(config_name): app = Flask(__name__) #初始化flask app.config.from_object(config[config_name]) #config_name就是配置資訊的那個字典 config[config_name].init_app(app) 呼叫配置資訊的初始化環境的靜態方法 mail.init_app(app) 第三方擴充套件初始化 #這裡寫的是上方的程式碼,用於藍圖註冊 return app
建立好了藍圖之後怎麼用呢?在app/main/views中,我們建立路由是這樣,程式碼如下:
@main.route("/") def index(): return redirect(url_for("main.路由名字"))
上面的程式碼寫好了之後,我們需要的就是運行了,為此在manage.py中程式碼如下:
import os from app import create_app, db from app.models import User, Role #匯入資料庫的兩個模型 from flask.ext.script import Manager, Shell #匯入flask_script from flask.ext.migrate import Migrate, MigrateCommand #匯入flask_migrate app = create_app(os.getenv('FLASK_CONFIG') or 'default') manager = Manager(app) migrate = Migrate(app, db) def make_shell_context(): return dict(app=app, db=db, User=User, Role=Role) manager.add_command("shell", #避免重複匯入資料庫模型 Shell(make_context=make_shell_context)) manager.add_command('db', MigrateCommand) if __name__ == '__main__': manager.run()
[email protected]:JackLiu16/flaskTs.git
相關推薦
Flask大型專案框架結構理解
導語:前段時間學習狗書的flask大型專案框架結構的時候有點混亂,到現在也知道是個啥了,想著,把關係理一理,寫一篇部落格。也方便後來學習的人查閱。以下是我建立專案時候的結構。 myproject ---->app 專
Pytest02:介紹pytest專案框架結構
這一節非常重要,要達到自己能安裝專案結構, 並能明白各個資料夾的作用,以後的專案開發都是圍繞這幾個資料夾。 咱們的目錄結構如圖: 1. tasks_test 目錄是專案名 2. src 目錄 是測試依賴的原始碼python包 , ——init——.py 告訴Python直譯器該
vue專案框架結構入門 及 vue基礎
vue框架使用說明 1.目前後臺框架主要運用了Bootstrap,用Vue模板去渲染資料。 2.運用webpack進行打包壓縮加版本號,並實時監控頁面變化,使用命令npm run dev啟動 如
Flask從入門到精通之大型程序的結構一
bootstrap jinja 運行 body 精通 強制 上下文 htm Coding 盡管在單一腳本中編寫小型Web 程序很方便,但這種方法並不能廣泛使用。程序變復雜後,使用單個大型源碼文件會導致很多問題。不同於大多數其他的Web 框架,Flask 並不強制要求大型
[ Python ] Flask 基於 Web開發 大型程序的結構實例解析
精確 object commit static AS AI .sql version bar 作為一個編程入門新手,Flask是我接觸到的第一個Web框架。想要深入學習,就從《FlaskWeb開發:基於Python的Web應用開發實戰》這本書入手,本書由於是翻譯
ssi框架搭建一個新包的結構理解
ssi(spring struts ibatis)框架下 搭建一個新包的理解 不同公司有不同的結構,再此就本公司的結構簡要介紹一下: servers專案下放的是tomcat伺服器啟動的配置檔案 context.xml 中可以找到資料庫 資訊 url=“jdbc:sqlse
flask web開發(四)--大型程式的結構
|-flasky |-app/ #四個頂級資料夾之一,flask程式儲存在這個裡面 |-templates/ |-static/ |-main/ |-__init__.py |-errors.py |-forms.py |-
【VIP視訊網站專案三】專案框架搭建、專案路由配置、資料庫表結構設計
一、專案路由的設計 視訊網站前臺頁面路由設計 路由 請求方法 模板 作用 / GET Index.html
flask_web 大型專案結構化
專案目錄樹 -flask_web -blog -app &n
Flask Web開發 7.0 大型程式的結構
儘管在單一指令碼中編寫小型Web程式很方便,但這種方法並不能廣泛使用。程式變複雜後,使用單個大型原始碼檔案會導致很多問題。不同於大多數其他Web框架,Flask並不強制要求大型專案使用特定的組織方式,程式結構的組織方式完全由開發者決定。本章將會介紹一種使用包和模組組織大型程式
聊聊Flask的專案結構(一)——怎麼使用藍圖使專案程式碼模組化
.idea資料夾是Pycharm IDE的快取檔案,這個是我推薦大家使用的IDE manage.py 是啟動服務的檔案,之前我們也把檢視路由放在這個檔案中,這在實戰中是不推薦的,因為如果我們有很多個頁面的話,單個manage.py檔案都會非常的大,管理和維護起
flask(三)專案管理器Manager/傳遞引數/優化專案程式碼結構
一. 專案檔案樹如下 1.建立工具類包 utils, 並在裡面建立__init__.py檔案用於存放初始化app的函式 __init__.py檔案設定如下: import os from flask import Flask from App.v
mysql體系結構理解與分析
interface storage 編程語言 數據庫 結構圖 接觸mysql有一年多了,但是始終是一個偶爾用用的狀態,對其原理性的東西研究不夠,在不少mysql相關的暑假中提到mysql體系結構,很清楚解析了mysql的各個模塊分層和主要功能特性,在理解此功能特性後,會剛好的幫助我
Nginx Http框架的理解
布爾 遞歸 組成 方法 模塊開發 cati mail 模塊 由於 HTTP框架是Nginx基礎框架的一部分,Nginx的其它底層框架如master-worker進程模型、event模塊、mail 模塊等。 HTTP框架代碼主要有2個模塊組成:ngx_http_module和
HABSE表結構理解
img blog 分享 image hab .com 必須 spa bsp 也分為行列,行是索引,鎖定數據,查找數據只能通過行列:建表時必須知道列族,真實列(列簇)在插入數據時候可以指定 查找指定列,必須帶列族,列族1:nameHABSE表結構理解
ios測試框架的理解
gin behavior pla 高速 導入 pod should 創建 運行 關於ios的測試 Cedar 、Specta 、Kiwi 、 XCTest Specta和Kiwi的差別就是Kiwi包括了Specta和OCmock以及Expeata全部的功能
SSH框架整體理解和總結
程序員 mapper 集成 開發效率 beans 緩沖 -h 服務器端 邏輯 首先,SSH不是一個框架,而是多個框架(struts+spring+hibernate)的集成,是目前較流行的一種Web應用程序開源集成框架,用於構建靈活、易於擴展的多層Web應用程序。 集成
Spring MVC 框架結構介紹(二)
指定 let url 16px () isp -s 一個 ping Spring MVC框架結構 Spring MVC是圍繞DispatcherServlet設計的,DispatcherServlet向處理程序分發各種請求。處理程序[email prot
基本數據結構理解
最大 數據 arr 鏈表 stack next turn 靜態鏈表 有一種 基本的數據結構小結,用數組代替指針 鏈表 鏈表和數組最大的不同是擁有 next值 並且各點在內存中彼此分散與內存的物理順序無關。如果為a[5]={1,2,3,4,5};這時候每個值是按照順
創建框架結構的頁面
細節 一個 height logs 不能 根據 樣式 展示 使用 框架指的是一種布局 1.創建窗口框架頁面:有的網頁,像論壇,就左側是導航欄,右側是論壇主體,單擊左側導航欄,則在右側顯示鏈接頁面。這個布局是將瀏覽器分為左右兩部分。 創建窗口框架的<frames