iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
Modern Web

資工琪琪的後端學習筆記(python&flask)系列 第 14

Day 14 Flask 回應與導向 Response & Redirect

  • 分享至 

  • xImage
  •  

回應前端的方式

直接回應字串

將字串透過網路,傳送到前端

  • 在路由的處理函式中,回傳想要回應的字串
@app.route("/")
def index():
    return "字串"

回應 JSON 格式字串

將字典(dictonary)轉換成 JSON 格式字串,傳送到前端

  • 透過 json.dumps() 將字典型態的資料轉換成JSON格式字串
@app.route("/")
def index():
    return json.dumps(字典)

重新導向

將使用者導向到另外一個網址路徑

  • 透過redirect()將使用者導向到特定網址路徑
@app.route("/")
def index():
    return redirect(網址路徑)

實際操作(不同的回應方式)

回應JSON格式

  1. 我們要 import json

  2. 利用json.dumps將字典(dictionary)改為json字串

  3. 執行Server,ㄟ!阿怎麼式亂碼?

    因為除了英文以外的文字都會被轉為英文再重新編碼後才被輸出

  4. 那我們在json.dumps裡的字典後面增加ensure_ascii=False參數
    ~成功了!!~

重新導向

  1. 先載入redirect 函式

  2. 修改函式,如此一來就會導向到google

綜合練習

在不同路徑,做出不同的回覆

from unittest import result
from flask import Flask, redirect #載入 Flask
from flask import request #載入 Request 物件
import json #引用json模組
from flask import redirect  #載入redirect函式
#在建立Application物件,可以設定靜態檔案的路徑處理
app=Flask(__name__) 

@app.route("/getSum")   #建立路徑
def getSum():   #處理函式,給他一個1+..+maxNum的Function
    minNum=request.args.get("min",0)
    minNum=int(minNum)
    maxNum=request.args.get("max",100)  #如果網址沒有要求字串, maxNum=100
    maxNum=int(maxNum)  #maxNum剛收到的資料為string要轉為int
    result=0
    for i in range(minNum,maxNum+1):
        result+=i
    return "結果 : "+str(result)

@app.route("/") #'/'叫正斜線反之'\'叫反斜線
def index():#用來回應路徑 / 的處理函式
    return "Hello World"

@app.route("/string")   #response 字串
def res_string():
    return "Hello Flask~"

@app.route("/google")   #導向到google
def res_google():
    return redirect("https://www.google.com")

@app.route("/dict") #json 字串
def res_dict():
    return json.dumps({
        "mood":"開心",
        "speed":"好想過年"
    },ensure_ascii=False)
#建立路徑 /data對應的處理函式
@app.route("/data")
def handData():
    return "My Data"
#動態路由:建立 /usr/使用者名稱 的處理函式

@app.route("/user/<username>")
def handleUser(username):
    return "Hello "+username

@app.route("/player/<name>")
def User(name):
    if name=="琪琪":
        return "嗨! "+name
    else:
        return "我是BOT"

app.run(port=3000) #啟動伺服器

結果

參考文章與資料來源

澎澎的教學網站
澎澎的yt教學頻道


上一篇
Day 13 Flask 要求字串處理 Query String
下一篇
Day 15 Flask 樣板引擎 Template Engine
系列文
資工琪琪的後端學習筆記(python&flask)30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言