Flask Post 請求

Salman Mehmood 2024年2月15日
Flask Post 請求

我們將通過這個解釋瞭解兩種基本的 HTTP 方法(getpost),我們還將瞭解它們之間的區別,然後通過一個基本示例來了解如何從 Flask 中的基本表單傳送資料.

在 Flask 中使用 Post 請求

我們將解釋 HTTP 方法、getpost 請求。你可能以前聽說過這兩種方法; get 是獲取資訊或向網站或客戶傳送資訊的最常用方式,具體取決於資訊的傳送方式。

Post 是一種安全的方式; get 本質上是一種不安全的獲取資訊的方式;它是最常用的。當我們執行我們的應用程式並瀏覽它時,我們可以看到它已連線到我們擁有主頁的位置;如果我們進入控制檯,會彈出一條語句並說 get

這是什麼意思?本質上,每當我們在這裡輸入內容時都是不安全的,這意味著你知道任何人都可以看到它。

將傳送到伺服器並使用 get 方法返回給我們實際網頁的資訊不是安全資訊。

from flask import Flask

app = Flask(__name__)


@app.route("/")
def index():
    return "Hi there, this is testing"


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

輸出:

獲取方法

如果我們使用 post 請求,我們可以傳送加密的安全資訊,我們不會從任何一個端點看到它。它不儲存在實際的 Web 伺服器上,因此這就是 getpost 之間的區別。

我們可能沒有以最好的方式解釋它,但是通過這篇文章,我們將瞭解它們之間的主要區別以及考慮用於傳送不安全請求和 post 請求的 get 方法是安全的基本方法用於傳送資料,通常用於傳送表單資料。

讓我們來看一個基本的例子:我們想在這個應用程式中設定幾個不同的頁面。我們將編寫一個帶有對話方塊的指令碼,在該對話方塊中,有人可以使用按鈕鍵入併傳送它,我們在使用 post 請求時執行此操作。

我們將使用名為 LOGIN() 的方法設定一個頁面,在頂部給它一個裝飾器,然後放置 "/login"。我們需要新增另一個我們還沒有看到的方面:方法

我們可以在這個登入頁面上使用它,所以預設情況下,每當你連線,或者你去幾個頁面之一,然後你去一個 get 請求,這意味著我們需要獲取該資訊,但它不會為了安全起見,這就是為什麼我們有一種不同的方法,即 post 方法。

在裝飾器中,我們需要使用一個名為 methods 的引數,它接受一個列表,然後我們在列表中放置一個 postget

@app.route("/login", methods=["POST", "GET"])

問題是我們如何在這個 login 函式中確定我們是呼叫 get 請求還是呼叫 post 請求?我們需要開始匯入 request 並將其與 if 語句一起使用,以檢查我們是否通過 get 請求或 post 請求到達此頁面。

如果我們有一個 post,我們會重定向使用者並將資料傳送到使用者頁面,我們可以在其中顯示資料。我們還使用 Data 作為表單字典的鍵,並從我們的 login.html 檔案中訪問它,其中我們有一個名為 name 的屬性。

如果我們有 get 請求,我們使用 render_template() 方法呈現登入頁面。

def LOGIN():
    if request.method == "POST":
        UER_DATA = request.form["DATA"]
        return redirect(url_for("USER", usr=UER_DATA))
    else:
        return render_template("login.html")

現在我們需要再建立一個頁面,函式的名稱將是 USER(),它將接受一個變數 usr。我們將返回基本的 HTML,而不是返回模板。

@app.route("/<usr>")
def USER(usr):
    return f"<h1>{usr}</h1>"

現在我們需要構建一個簡單的 HTML 表單的登入頁面,因此,在模板資料夾中,我們建立一個 login.html 檔案;在這個檔案中,我們將使用 Bootstrap 啟動器模板。在 body 標籤內,我們開始建立表單。

我們使用了 method 屬性,在這種情況下,我們的方法將是 post,因為我們將釋出資訊,而不是獲取資訊,通常,如果你將 get 放在這裡,這意味著你將使用你從伺服器獲得的資訊填寫此表格。

 <h1>Hello, this is login page!</h1>
    <form action="#" method="post">
        <p>Name:</p>
        <p><input type="text" name="DATA" /></p>
        <p><input type="submit" value="submit"/></p>
    </form>

這是我們上面解釋的 app.py 檔案的完整原始碼。

from flask import Flask, render_template, redirect, url_for, request

app = Flask(__name__)


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


@app.route("/login", methods=["POST", "GET"])
def LOGIN():
    if request.method == "POST":
        UER_DATA = request.form["DATA"]
        return redirect(url_for("USER", usr=UER_DATA))
    else:
        return render_template("login.html")


@app.route("/<usr>")
def USER(usr):
    return f"<h1>{usr}</h1>"


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

輸出:

Flask Post 請求

控制檯輸出:

Flask Post 請求 - 控制檯輸出

作者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn