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):
pip install pymongo
or support for mongodb+srv:// URIs requires dnspython:
pip install pymongo[srv]
連線設定:
from pymongo import MongoClient
client = MongoClient('url')
app.db = client['database_name']
參考資料
.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」的對話框了。
參考資料
heroku run commands with quotes:
heroku run 'gunicorn "app:create_app()"'
最後更新日期: 2021 年 7 月 30 日
Comments
Post a Comment