1. 程式人生 > >Flask大型專案框架結構理解

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

config = {

'development': DevelopmentConfig,

'testing': TestingConfig,

'production': ProductionConfig,

'default': DevelopmentConfig

}

配置資訊寫好之後,便開始開發了。由於結構的問題,使得我們需要使用藍圖來進行開發。我們在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