Flask實戰腳手架-專案建立
暫定功能模組:
使用者模組
文章模組
用到的python外掛:
Flask-Login #使用者登陸
Flask-Migrate #資料庫管理工具
Flask-DebugToolbar #dubug工具欄
Flask-SQLAlchemy #ORM
Flask-WTF #表單
專案目錄結構
myweb │ └───app #此為應用主目錄│ │ │ └───backend #應用分組模組,這樣區分的好處是結構化│ │ │ __init__.py │ │ │ forms.py #表單集合│ │ │ views.py #路由│ │ │ └───static #靜態的檔案,如jpg、css、js│ │ │ ... │ │ │ └───templates #模板檔案│ │ └───backend #對應app/backend模板目錄│ │ └───layout #模板佈局目錄│ │ │ │ __init__.py │ │ cli.py #這裡集中管理註冊的命令│ │ config.py #這裡集中管理配置的檔案│ │ models.py #這裡集中管理資料模型│ │ run.py #單獨剝離出來的執行檔案,檔案除錯,比如```cli、flask shell```│ └───venv #python3 -m venv venv虛擬環境
專案的結構化的整理主要是為了合理的管理專案,但都是自由化的,比如
app/models.py
他是管理資料模型的裡面有User、News...
等,但是當表模型很多的情況下完全可以升級他,比如刪除models.py
接著新建一個models
資料夾,在裡面建立User.py、News.py...
一切的一切只是為了更好的管理專案。
1. 搭建虛擬環境
建立一個目錄myweb,並進入目錄,建立python3的虛擬環境
mkdir myweb && cd myweb python3 -m venv venv #建立指定的venv. venv/bin/action #啟動虛擬環境
2. 建立配置檔案
app/config.py
import os basedir = os.path.abspath(os.path.dirname(__name__))class Config(object): SECRET_KEY = os.environ.get('SECRET_KEY') or '!@#$%^&*12345678' SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db') SQLALCHEMY_TRACK_MODIFICATIONS = False DEBUG_TB_INTERCEPT_REDIRECTS = False #這配置debug的工具欄不攔截302跳轉class DevelopmentConfig(Config): SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db')class ProductionConfig(Config): SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db')
配置一個預設的,開發的,線上的。
3. 建立應用工廠 app/__init__.py
from flask import Flask #匯入flaskfrom app.config import Config #匯入配置檔案中的Configdef create_app(config_class=Config): app = Flask(__name__) app.config.from_object(config_class) return app
流水線匯入所需要的外掛,之後在create_app
裡面初始化init_app()
。 init_app()這個會把外掛掛載到app應用上
4. 建立命令 app/cli.py
def register(app): @app.cli.command('add_account', short_help='新增賬號') def add_account(): pass
在這裡集中放命令,這裡的方法會在run.py
的cli.regiter(app)
把create_app
建立的返回物件注入進去,就可以flask add_account
就可以使用此命令了。
5. 建立執行入口 run.py
from app import create_app, cli app = create_app() cli.register(app)@app.shell_context_processordef make_shell_context(): return { 'app': app }
flask shell
進入shell環境,就可以使用 @app.shell_context_processor
壓入的dist,而不需要手動進入 form app import app
現在我們可以試著執行下專案了,先安裝所需要的Flask。pip install flask
export FLASK_APP=run.pyexport FLASK_ENV=development flask shell Python 3.7.0 (default, Jul 23 2018, 20:22:55) [Clang 9.1.0 (clang-902.0.39.2)] on darwin App: app [development] Instance: /Users/jydd/python/myweb/instance >>> app <Flask 'app'>
給專案加把鎖,用git版本控制
.gitignore
venv/ *.pyc __pycache__/ instance/
到這裡我們試試專案是否正常可用。我們在工廠函式那加一個檢視測試看看 app/__init__.py
from flask import Flask #匯入flaskfrom app.config import Config #匯入配置檔案中的Configdef create_app(config_class=Config): app = Flask(__name__) app.config.from_object(config_class) @app.route('/') def index(): return 'index' return app
訪問 正常情況下會顯示 index這就說明基本框架已起正常執行了
作者:七霸刀
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1868/viewspace-2819213/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【 Vue 】 Vue 使用腳手架建立專案Vue
- vue-cli3.0腳手架+typescript專案建立VueTypeScript
- 七天接手react專案 系列 —— react 腳手架建立專案React
- 前端部署腳手架專網專案實踐前端
- Dva手腳架搭建React專案React
- 簡單vue專案腳手架Vue
- 使用腳手架搭建VUE專案Vue
- 從零開始製作cli工具,快速建立專案腳手架
- flask 專案開發實戰Flask
- 使用腳手架建立Vue程式Vue
- spring cloud腳手架專案(十一)logback配置SpringCloud
- 使用 .NET CLI 構建專案腳手架
- 用腳手架搭建一個 vue 專案Vue
- SpringBoot2.1腳手架(種子)專案Spring Boot
- 用 yeoman 打造自己的專案腳手架
- 自己搭建一個vue專案(腳手架)Vue
- Net通用應用的專案框架腳手架框架
- 微信小程式--專案腳手架的搭建微信小程式
- 兩步建立vue-cli腳手架Vue
- Vue腳手架建立專案出現 (Failed to download repo vuejs-templates/webpack: Response code 404)VueAIJSWeb
- Java如何搭建腳手架(自動生成通用程式碼),建立自定義的archetype(專案模板)Java
- 前端工程化: 腳手架+物料庫快速生成新專案前端
- flask專案1實戰:2.2 flask框架下使用圖片驗證碼Flask框架
- vue腳手架Vue
- 什麼是腳手架?為什麼需要腳手架?常用的腳手架有哪些?
- 專案實戰之元件化架構元件化架構
- vue 腳手架 配置 及檔案介紹Vue
- 用 Node 搭建最小實現腳手架
- 從React腳手架工具學習React專案的最佳實踐(上):前端基礎配置React前端
- 肝了一個半月的 Java 專案快速開發腳手架:ChewingJava
- vue - Vue腳手架Vue
- 腳手架與混入
- vue腳手架工具Vue
- Vue 2.5 從零開始學習 - 利用 Vue cli 腳手架工具快速建立 工程化的 Vue 專案Vue
- Java Spring Cloud 實戰之路 - 1 建立專案JavaSpringCloud
- 微服務架構專案實戰:Spring Boot 如何建立簡單的 REST 服務微服務架構Spring BootREST
- 不借助腳手架手動搭建react專案(webpack5 + Antd4 + React18)ReactWeb
- vue腳手架基礎Vue