flask 小抄(pip + virtualenv 版)(Flask 2.0.1)

初始化專案

  • 建立並移動到專案資料夾

  • 建立虛擬環境:pyenv exec python -m venv .venv

  • 啟動虛擬環境:
    . .venv/bin/activate,或
    source .venv/bin/activate

  • 安裝 Flask 套件:pip install Flask

  • 在根目錄建立 app.py

  • 設定環境變數:
    export FLASK_APP=app.py
    export FLASK_ENV=development(存擋後會自動重啟 app)

  • .gitignore:Python.gitignore

  • Application Factories 起手式:
    # app.py
    from flask import Flask, render_template, request


    def create_app():
        app = Flask(__name__)
        # do something
        return app

執行專案

  • flask run

  • 在瀏覽器網址列輸入 http://127.0.0.1:5000/

Jinja2

套件管理

requirements.txt

連接資料庫

mongodb

安裝套件(先確定有啟動 venv):

連線設定:

參考資料

.env

  • 安裝套件(記得先啟動 venv):pip install python-dotenv

  • # app.py
    import os
    from dotenv import load_dotenv
    load_dotenv()
    client = MongoClient(os.environ.get("MONGODB_URI"))

    # .env
    MONGODB_URI=XXXX

    #.env.example
    MONGODB_URI=SKIP

    # .gitignore
    .env

    # requirements.txt
    python-dotenv

部署

Heroku

  • python 版本:
    # runtime.txt
    python-3.9.6

  • 啟動伺服器

    • # requirements.txt
      gunicorn

    • # Procfile
      web gunicorn "app:create_app()"

相關指令

  • 列出已安裝的套件:pip freeze

  • 啟動本地的 mongodb:「mongod」檔案存放路徑/mongod --dbpath 資料夾路徑(此資料夾用來存 db 資料)

小插曲

Formatter autopep8 is not installed

VSCode 每次存擋的時候就會跳出對話框,問我要不要安裝 autopep8。

參考資料:How to stop autopep8 not installed messages in Code

對話框選了 Yes 後,終端出現這個:


$ /Users/flora/.pyenv/versions/3.9.6/bin/python -m pip install -U autopep8
Collecting autopep8
Using cached autopep8-1.5.7-py2.py3-none-any.whl (45 kB)
Collecting toml
Using cached toml-0.10.2-py2.py3-none-any.whl (16 kB)
Collecting pycodestyle>=2.7.0
Using cached pycodestyle-2.7.0-py2.py3-none-any.whl (41 kB)
Installing collected packages: toml, pycodestyle, autopep8
Successfully installed autopep8-1.5.7 pycodestyle-2.7.0 toml-0.10.2

之後存擋時,就會自動排版,不再跳出「要不要安裝 autopep8」的對話框了。

參考資料


最後更新日期: 2021 年 7 月 30 日

Comments

Popular posts from this blog

Alpha Camp 全端開發課程學習心得

在 javascript 用 regular expression 為金額加上千位數分隔符號

shop_platform - sqlalchemy.exc.TimeoutError