亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

HTML 表單(python、flask):有一個按鈕向方法提交唯一的參數

HTML 表單(python、flask):有一個按鈕向方法提交唯一的參數

智慧大石 2023-12-19 10:37:08
我現在有一個很好的 HTML 表單,可以通過按鈕調用方法。我想要做的是創建幾個調用相同方法的新按鈕,但每個按鈕傳遞不同的參數。具體用例是:我的按鈕現在使用 get_random_album() 檢索隨機相冊。我想制作“爵士”、“古典”和“搖滾”音樂分別調用 get_random_album(genre=<genre>). 的按鈕移動平均維數:from flask import Flask,redirect# Below import commented out for MVE# from discogs import get_random_album# TODO: look at more advanced form builders# Create app instanceapp = Flask(__name__)# Create homepage with [email protected]("/")def home():    return """    <html><body>    <h2> Spin yo records </h2>        <form action="/query">            <input type='submit' value="I'm Feeling Lucky">    </body></html>    """# Backend query to [email protected]("/query")def link():    # return redirect(get_random_album())    # Real implementation commented out    # Scratch implementation here    def get_random_album(genre=None):        url = "https://www.google.com"         if genre == 'Jazz':            return url + "/search?q=jazz"        if genre == 'Classical':            return url + "/search?q=classical"        if genre == 'Rock':            return url + "/search?q=rock"        return url    return redirect(get_random_album())# Run appif __name__ == "__main__":    app.run(debug=True,port=600)實際項目
查看完整描述

1 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

首先創建具有相同name但不同的按鈕value


@app.route("/")

def home():

    return """

    <html>

    <body>

    <h2> Spin yo records </h2>


        <form action="/query">

            <input type="submit" name="selected_genre" value="Jazz">

            <input type="submit" name="selected_genre" value="Classic">

            <input type="submit" name="selected_genre" value="Rock">

            <input type="submit" name="selected_genre" value="I'm Feeling Lucky">

        </form>

    </body>

    </html>

    """

接下來,您可以使用 和按鈕中使用的名稱來選擇valuerequest


from flask import request

import random


@app.route("/query")

def link():

    allowed_values = ('Jazz', 'Classic', 'Rock')


    genre = request.args.get("selected_genre")


    # "I'm Feeling Lucky"

    if genre not in allowed_values:

        genre = random.choice(allowed_values)


    genre = genre.lower()


    url = f"https://www.google.com/search?q={genre}" 


    return redirect(url)

完整示例


from flask import Flask, redirect, request

import random


app = Flask(__name__)


@app.route("/")

def home():

    return """

    <html>

    <body>

    <h2> Spin yo records </h2>


        <form action="/query">

            <input type="submit" name="selected_genre" value="Jazz">

            <input type="submit" name="selected_genre" value="Classic">

            <input type="submit" name="selected_genre" value="Rock">

            <input type="submit" name="selected_genre" value="I'm Feeling Lucky">

        </form>

    </body>

    </html>

    """



@app.route("/query")

def link():

    allowed_values = ('Jazz', 'Classic', 'Rock')


    genre = request.args.get("selected_genre")


    if genre not in allowed_values:

        genre = random.choice(allowed_values)


    genre = genre.lower()


    url = f"https://www.google.com/search?q={genre}" 


    return redirect(url)



if __name__ == "__main__":

    app.run(debug=True,port=600)

在以前的版本中,它在 url 中發送 value ,即。 /query?selected_genre=Rock - 這樣每個人都可以看到它,或者很容易它可以嘗試使用自己的價值。這就是為什么我使用 allowed_values 來阻止它。

要從 url 中隱藏選定的流派,您必須使用:

  • <form ... method="POST">

  • @app.route(..., methods=['GET', 'POST'])(或methods=['POST']

  • request.form代替request.args


完整示例

from flask import Flask, redirect, request

import random


app = Flask(__name__)


@app.route("/")

def home():

    return """

    <html>

    <body>

    <h2> Spin yo records </h2>


        <form action="/query" method="POST">

            <input type="submit" name="selected_genre" value="Jazz">

            <input type="submit" name="selected_genre" value="Classic">

            <input type="submit" name="selected_genre" value="Rock">

            <input type="submit" name="selected_genre" value="I'm Feeling Lucky">

        </form>

    </body>

    </html>

    """


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

def link():

    allowed_values = ('Jazz', 'Classic', 'Rock')


    genre = request.form.get("selected_genre")


    if genre not in allowed_values:

        genre = random.choice(allowed_values)


    genre = genre.lower()


    url = f"https://www.google.com/search?q={genre}" 


    return redirect(url)



if __name__ == "__main__":

    app.run(debug=True, port=600)

如果您想在按鈕上使用不同的文本但仍發送相同的value,那么您可能需要隱藏 <input> 和 value 但是每個按鈕都需要分開 <form>


@app.route("/")

def home():

    return """

    <html>

    <body>

    <h2> Spin yo records </h2>


        <form action="/query" method="POST">

            <input type="hidden" value="Jazz" name="selected_genre">

            <input type="submit" value="The Best Jazz Music">

        </form>


        <form action="/query" method="POST">

            <input type="hidden" value="Classic" name="selected_genre">

            <input type="submit" value="The Best Classic Music">

        </form>


        <form action="/query" method="POST">

            <input type="hidden" value="Rock" name="selected_genre">

            <input type="submit" value="The Best Rock Music">

        </form>


        <form action="/query" method="POST">

            <input type="hidden" value="random" name="selected_genre">

            <input type="submit" value="I'm Feeling Lucky">

        </form>

    </body>

    </html>

    """

或者您必須使用 <button> 而不是 <input>


@app.route("/")

def home():

    return """

    <html>

    <body>

    <h2> Spin yo records </h2>

        <form action="/query" method="POST">

            <button type="submit" name="selected_genre" value="Jazz">The Best Jazz Music</button>

            <button type="submit" name="selected_genre" value="Classic">The Best Classic Music</button>

            <button type="submit" name="selected_genre" value="Rock">The Best Rock Music</button>

            <button type="submit" name="selected_genre" value="random">I'm Feeling Lucky</button>

        </form>

    </body>

    </html>

    """


查看完整回答
反對 回復 2023-12-19
  • 1 回答
  • 0 關注
  • 191 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號