Flask實戰(zhàn)腳手架-項目創(chuàng)建

實戰(zhàn)腳手架準(zhǔn)備分三部曲

Flask實戰(zhàn)腳手架 (后端+restful api)
Yii2實戰(zhàn)腳手架 (后端+restful api)
Vue2實戰(zhàn)腳手架(前端)


Flask實戰(zhàn)腳手架 (后端+restful api)

學(xué)習(xí)Flask從實戰(zhàn)開始霞篡,制作一個web常用的腳手架霉囚,已備以后快速開發(fā)涉瘾。
項目git地址第一次提交

暫定功能模塊:

  • 用戶模塊
  • 文章模塊

用到的python插件:

  • Flask-Login #用戶登陸
  • Flask-Migrate #數(shù)據(jù)庫管理工具
  • Flask-DebugToolbar #dubug工具欄
  • Flask-SQLAlchemy #ORM
  • Flask-WTF #表單

項目目錄結(jié)構(gòu)

myweb
│
└───app #此為應(yīng)用主目錄
│   │   
│   └───backend #應(yīng)用分組模塊,這樣區(qū)分的好處是結(jié)構(gòu)化
│   │   │   __init__.py
│   │   │   forms.py #表單集合
│   │   │   views.py #路由
│   │ 
│   └───static #靜態(tài)的文件萍歉,如jpg贱呐、css、js
│   │   │   ...
│   │ 
│   └───templates #模板文件
│   │   └───backend #對應(yīng)app/backend模板目錄
│   │   └───layout #模板布局目錄
│   │   
│   │   __init__.py
│   │   cli.py #這里集中管理注冊的命令
│   │   config.py #這里集中管理配置的文件
│   │   models.py #這里集中管理數(shù)據(jù)模型
│   
│   run.py #單獨剝離出來的運行文件,文件調(diào)試悠汽,比如```cli箱吕、flask shell```
│
└───venv #python3 -m venv venv虛擬環(huán)境

項目的結(jié)構(gòu)化的整理主要是為了合理的管理項目,但都是自由化的柿冲,比如 app/models.py 他是管理數(shù)據(jù)模型的里面有 User茬高、News...等,但是當(dāng)表模型很多的情況下完全可以升級他假抄,比如刪除models.py接著新建一個models文件夾怎栽,在里面創(chuàng)建User.py耕渴、News.py... 一切的一切只是為了更好的管理項目琉兜。

1. 搭建虛擬環(huán)境

創(chuàng)建一個目錄myweb,并進(jìn)入目錄饲鄙,創(chuàng)建python3的虛擬環(huán)境

mkdir myweb && cd myweb
python3 -m venv venv #創(chuàng)建指定的venv
. venv/bin/action #啟動虛擬環(huán)境

2. 創(chuàng)建配置文件

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跳轉(zhuǎn)


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')

配置一個默認(rèn)的谬以,開發(fā)的强饮,線上的。

3. 創(chuàng)建應(yīng)用工廠 app/__init__.py

from flask import Flask #導(dǎo)入flask
from app.config import Config #導(dǎo)入配置文件中的Config


def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(config_class)

    return app

流水線導(dǎo)入所需要的插件为黎,之后在create_app里面初始化init_app()邮丰。 init_app()這個會把插件掛載到app應(yīng)用上

4. 創(chuàng)建命令 app/cli.py

def register(app):
    @app.cli.command('add_account', short_help='添加賬號')
    def add_account():
        pass

在這里集中放命令,這里的方法會在run.pycli.regiter(app)create_app創(chuàng)建的返回對象注入進(jìn)去铭乾,就可以flask add_account就可以使用此命令了剪廉。

5. 創(chuàng)建運行入口 run.py

from app import create_app, cli

app = create_app()
cli.register(app)

@app.shell_context_processor
def make_shell_context():
    return {
        'app': app
    }

flask shell 進(jìn)入shell環(huán)境,就可以使用 @app.shell_context_processor 壓入的dist,而不需要手動進(jìn)入 form app import app


現(xiàn)在我們可以試著運行下項目了炕檩,先安裝所需要的Flask斗蒋。
pip install flask

export FLASK_APP=run.py
export 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/

到這里我們試試項目是否正撑跏椋可用吹泡。我們在工廠函數(shù)那加一個視圖測試看看 app/__init__.py

from flask import Flask #導(dǎo)入flask
from app.config import Config #導(dǎo)入配置文件中的Config


def create_app(config_class=Config):
    app = Flask(__name__)
    app.config.from_object(config_class)

    @app.route('/')
    def index():
        return 'index'

    return app

訪問http://127.0.0.1:5000 正常情況下會顯示 index這就說明基本框架已起正常運行了

下一步

【Flask實戰(zhàn)腳手架-用戶模塊】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末骤星,一起剝皮案震驚了整個濱河市经瓷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洞难,老刑警劉巖舆吮,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異队贱,居然都是意外死亡色冀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門柱嫌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锋恬,“玉大人,你說我怎么就攤上這事编丘∮胙В” “怎么了彤悔?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長索守。 經(jīng)常有香客問我晕窑,道長,這世上最難降的妖魔是什么卵佛? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任杨赤,我火速辦了婚禮,結(jié)果婚禮上截汪,老公的妹妹穿的比我還像新娘疾牲。我一直安慰自己,他們只是感情好衙解,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布说敏。 她就那樣靜靜地躺著,像睡著了一般丢郊。 火紅的嫁衣襯著肌膚如雪盔沫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天枫匾,我揣著相機(jī)與錄音架诞,去河邊找鬼。 笑死干茉,一個胖子當(dāng)著我的面吹牛谴忧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播角虫,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼沾谓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了戳鹅?” 一聲冷哼從身側(cè)響起均驶,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎枫虏,沒想到半個月后妇穴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡隶债,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年腾它,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片死讹。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡瞒滴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赞警,到底是詐尸還是另有隱情妓忍,我是刑警寧澤稀并,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站单默,受9級特大地震影響碘举,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜搁廓,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一引颈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧境蜕,春花似錦蝙场、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至台诗,卻和暖如春完箩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拉队。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工弊知, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粱快。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓秩彤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親事哭。 傳聞我的和親對象是個殘疾皇子漫雷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容