2013-09-28 3 views
3

현재 내 프로젝트에서 내 인덱스 페이지에는 급류를 시작하거나 중지 할 수있는 버튼이있는 여러 급류가 표시됩니다.플라스크에서 클릭 한 버튼을 아는 방법은 무엇입니까?

양식이 항상 같은 이름을 가지도록 양식과 루프가있는 페이지를 만듭니다. 그러나 나는 사용자가 어떤 torrent를 멈출 지 알기 위해 어떤 버튼을 클릭했는지 알아야합니다!

@app.route('/index', methods = ['GET', 'POST']) 
    def index(): 
    user = 'stephane' 

    torrents = client.get_torrents() 

    # for each torrent, we include a form which will allow start or stop 
    for torrent in torrents: 
    torrent.control = TorrentStartStop() 
    if torrent.control.validate_on_submit(): 
     start_stop(torrent.id) 

return render_template("index.html", title = "Home", user = user, torrents = torrents) 

그래서, 어떻게 중지 할 사용자를 토런트있는 알고

시작/:

여기
{% block content %} 
<h1>Hello, {{user}} !</h1> 

{% for torrent in torrents %} 
     <form action="/index" method="post" name="torrent"> 
      {{torrent.control.hidden_tag()}} 
      <p><a href='/torrent/{{torrent.id}}'>{{torrent.name}}</a> is {{torrent.status}} and {{torrent.progress}} % finished. <input type="submit" value="Start/Stop"> 
      </p> 
     </form> 
    {% endfor %} 

뷰입니다 : 여기

템플릿입니까?

+0

'hidden_tag'코드를 볼 수 있습니까? –

+0

토런트가 맞습니다. 토렌트마다 양식을 열면 숨겨진 필드에 단순히 정보 해시를 제출할 수 있기 때문에 전체적인 문제는 실제로 존재하지 않습니다. 내 대답은 전체 페이지 또는 목록에 대한 단일 양식을 가정합니다. – jhermann

답변

0

사용하십시오 HTML <button type="submit"> 요소 중 하나를 설정하여 정보의 해시 value, 또는 정보의 해시를 포함하는 formaction URL을 설정 (formaction는 HTML5)입니다. hidden_tag 가정

2

이름 torrent_id과 가치 토런트의 ID를 가진 hidden 입력을 생성, 당신은 request.form["torrent_id"]의 토런트 ID를 찾을 수 있습니다 :

from flask import request 

.... 
torrent_id = request.form["torrent_id"] 
+0

hidden_tag는 csrf 보호 태그 일뿐입니다. 그러나 나는 당신의 충고를 사용해 무언가를 시도 할 것입니다. – 22decembre

+0

@ 22decembre'a '를''로 바꾸면 잘 될 것입니다. –

+0

좋아, 그래서 "어떤 버튼이 클릭 된"문제를 해결하고, 그런데, 내가 알지 못했던 버튼에 대해 배웠다. (나는 버튼이 아니라 입력을 알고 있었다.) 하지만 지금은 루프 때문에 급한 인라인이있는만큼 많은 답을 얻습니다. 그렇다면이 기능을 한 번만 시작하려면 어떻게해야합니까? – 22decembre

0

토마스가 정답을 제공합니다!

이제 루프 때문에 급한 인라인이있는 것처럼 많은 답을 얻습니다. 그렇다면이 기능을 한 번만 시작하려면 어떻게해야합니까?

나는 바보 같이 들리 겠지만, 나는 그것을 보지 못한다고 말한다.

+0

'torrent.control.validate_on_submit'을 루프 밖으로 가져 와서 해결했습니다. – 22decembre

관련 문제