# NKUST ITC 108-1 Python[5]
###### [https://python-slide.macs1207.dev](https://python-slide.macs1207.dev)
###### 2019/11/26
###### tags: `NKUST ITC` `Python 社課`
[TOC]
---
## [Github](https://github.com/macs1207/python-tutorial)
----
## 剩下的時間安排
|日期|內容|
|-|-|
|11/26|Flask|
|12/17|可能會辦活動|
|12/24 or 26|期末社員大會|
---
## Flask
----
### 簡介一下
Python的後端框架相當多,比較常見的
- Flask
- Django
- Tornado
Flask是比較輕量化的那種
----
### 首先安裝
```
pip install flask
```
----
### 那麼 Flask怎麼用呢
----
```python=
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "Hello world"
if __name__ == '__main__':
app.run()
```
這時,瀏覽器打開 http://127.0.0.1:5000
預設port是5000
----
### 順便提一下網址格式

- [圖源](http://www.examsmyantra.com/article/62/java/networking-in-java-the-java.net-class-and-working-with-url)
----
### 如果想指定port
```python=
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "Hello world"
if __name__ == '__main__':
app.run(port=8080)
```
http://127.0.0.1:8080
----
### 還記得GET method嗎
- 怎麼取得GET的參數呢
```python=
from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=["GET"])
def index():
name = request.args.get("name")
return "Hello, {}".format(name)
if __name__ == '__main__':
app.run()
```
http://127.0.0.1:5000/?name=nameeee
----
### 另一種GET
```python=
from flask import Flask, request
app = Flask(__name__)
@app.route('/<name>', methods=["GET"])
def index(name):
return "Hello, {}".format(name)
if __name__ == '__main__':
app.run(port=8080)
```
http://127.0.0.1:8080/namee
----
### 那 POST呢
```python=
from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=["POST"])
def index():
name = request.values['name']
return "Hello, {}".format(name)
if __name__ == '__main__':
app.run(port=8080)
```
請用requests對 http://127.0.0.1:8080 post看看
----
### 怎麼讓一個route應付兩種method
```python=
from flask import Flask, request
app = Flask(__name__)
@app.route('/', methods=["GET", "POST"])
def index():
if request.method == "GET":
data = request.args.get("data")
return "GET, {}".format(data)
elif request.method == "POST":
data = request.values['data']
return "POST, {}".format(data)
if __name__ == '__main__':
app.run(port=8080)
```
----
### 最後的練習
- 用flask做一個登入驗證小程式
- 帳號密碼直接設定在Python中就好,Dict之類的
- 回傳登入成功或失敗
- 用requests的POST測試就好
- 用flask做一個密碼查詢小程式
- 跟剛剛的大致上差不多
- 比如 http://127.0.0.1:8080?account=google 就回傳google的帳號密碼
---
## Discord
- [https://discord.gg/hmUeXeH](https://discord.gg/hmUeXeH)

----
## Telegram
- [https://t.me/kuasitc](https://t.me/kuasitc)

----
## 作者
- 社長 [Macs](https://github.com/macs1207)
- 副社長 [呆呆大蛙](https://github.com/daidaidarwa)
----
## 參考資料
- [Python-100-Days](https://github.com/jackfrued/Python-100-Days)
- [Wikipedia](https://zh.wikipedia.org)
- [成大X-Village教材](https://www.facebook.com/pages/category/Education/X-Village-423736361424301)
{"metaMigratedAt":"2023-06-15T02:00:15.192Z","metaMigratedFrom":"Content","title":"NKUST ITC 108-1 Python[5]","breaks":true,"contributors":"[{\"id\":\"0543727d-0e35-443a-a198-84223cf6d534\",\"add\":3368,\"del\":226}]"}