簡體   English   中英

如何知道在 flask 表單中按下了哪個按鈕? (燒瓶,HTML)

[英]How to know which button was pressed in flask form? (Flask, HTML)

我使用了一個 for 循環來填充 spotify 歌曲鏈接並將它們嵌入到 web 頁面上。 每首歌曲后都有一個按鈕,分別稱為“喜歡”和“不喜歡”——這里是 html:

 {% for (song_name, song_uri, submission_id) in songs: %}
 <br>
 <form action="" method="post">
     <div name="song" value="{{submission_id}}, {{song_name}}"><iframe
     src="https://open.spotify.com/embed/track/{{song_uri}}" height="80" frameborder="0"
     allowtransparency="true" allow="encrypted-media"></iframe>
     <input type="submit" value="Like"></input> 
     <input type="submit" value="Dislike"></input>
 </form> 
 {% endfor %}

假設列出了 4 首歌曲,submission_id 分別為 1、2、3、4。 然后我想計算用戶是否單擊了特定歌曲的“喜歡”或“不喜歡”按鈕。

如果用戶在歌曲 #1 (submission_id = "1") 上單擊“Like”,那么我將提取該歌曲的鏈接並在我的后端使用它。 我不確定如何讓每個按鈕與我的 flask 應用程序的請求相對應,所以當用戶點擊“喜歡”時,我知道他們的意思是歌曲 #1(submission_id = “1”)。

到目前為止,我已經在我的 flask 應用程序中嘗試了這個:

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

    songs = load_songs.load_songs()

    if request.method == "POST":
        song_number = request.form['submission_id']

但是,這會導致以下錯誤:

werkzeug.exceptions.BadRequestKeyError: 400 Bad Request: The browser (or proxy) sent a 
request that this server could not understand.
KeyError: 'submission_id'

任何建議表示贊賞

您可以做一個小技巧 - 使用喜歡/不喜歡按鈕向 api 發送請求並在請求正文中發送 id,然后接受 id 來處理它。 一個示例請求是這樣的: GET: songs / like /? id = 1 GET: songs / like /? id = 1

在您創建了上述 api 方法后,您可以通過單擊 ajax 請求形式的按鈕來訪問它,這將允許您在不刷新頁面的情況下跟蹤喜歡/不喜歡的數量,通常,做任何事情你要

例如 ajax:

var endpoint = 'songs/likes/?id={{submission_id}}'
$.ajax({
        method: "GET",
        url:endpoint,
        success: function (result){
            console.log("do something if successful, like display the next song") 
})

最后,機制非常簡單。 您將 id 設置為按鈕,然后通過單擊按鈕,調用 ajax,它將使用歌曲 ID 向 api 發出請求,將有關用戶是否喜歡該作品的信息發送到后面,然后,已經通過后端的 api 收到結果,以某種方式處理它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM