Flask紀錄歷程

Env: Python - 3.6, Flask - 0.12, virtualenv


Step 1. 建置環境

1
2
3
4
5
6
7
8
9
pip3 install virtualenv 
cd /<proj>
virtualenv flask #後面為專案名稱,請自行設置
cd flask #切換目錄,p.s cmder 如果要切換硬碟路徑,請直接輸入硬碟代號。e.g. D:
Scripts activate #進入專案虛擬環境
(flask) $ #已進入虛擬環境
(flask) $ pip install Flask #安裝 Flask
(flask) $ pip3 freeze #可查看此環境安裝的套件
deactivate #離開環境

Step 2. 執行第一支程式

1
2
mkdir main #新增一個 app 資料夾
在裡面新增一個 index.py
1
2
3
4
5
6
7
8
9
10
from flask import Flask
app = Flask(__name__)

@app.route('/')
#為路由路徑,伺服器接到網頁請求會做配對,再來到哪個 function 做處理
def index():
return '第一支flask不用hello world'

if __name__ == '__main__':
app.run(debug=True)

1
(flask) $ python index.py

看到顯示已下訊息表示成功,在網址列輸入IP吧!

Restarting with stat
Debugger is active!
Debugger PIN: 157–857–326
Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Step 2–1. 建立模版

templates 是在 MVC 中的 View 是處理前端,顯示頁面
mkdir templates
目前目錄應為

flask/

 — — main/

 — — — — templates/

 — — — — — — — — index.html

 — — — — index.py


index.html

1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<link rel="stylesheet" href="">
</head>
<body>
第一支flask不用hello world
</body>
</html>

index.py

1
2
3
4
5
6
7
8
9
from flask import Flask
app = Flask(__name__)

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

if __name__ == '__main__':
app.run(debug=True)


1
(flask) $ python index.py

Step 2–2. 與資料庫連接

由於 Python3 不支援 mysqldb,需安裝 pymysql

1
(flask) $ pip install PyMySQL

mysql.py

無 ORM 操作,只是簡單帶入 sql 語法來執行查詢

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from flask import Flask, jsonify
from flask_mysqldb import MySQL
import config #請將Mysql帳密另設置在config.py
import pymysql
import json
app = Flask(__name__)
db = pymysql.connect(host=config.D_host, user=config.D_user, passwd=config.D_passwd,db=config.D_name, port=config.D_port, charset='utf8')
@app.route('/')
def show_data():
cur = db.cursor()
cur.execute("SELECT Cur, Cash_s from tw_bank ")
show_all = cur.fetchall() #取得所有結果,以陣列或物件方式回傳
return jsonify(show_all)
# jsonify會將內容轉為json,並且將Content-Type改為application/json
db.close()
if __name__ == '__main__':
app.run(debug=True)

未經允許請勿轉載文章

評論

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×