[英]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.