2016-11-15 9 views
-1

これで2つのhtmlファイルがあります。 base.htmlとsearch_results.htmlFlask用に2番目のhtmlファイルのボタンが機能しない

base.html

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>Title</title> 
 
    <style> 
 
    body { 
 
     font-family: sans-serif; 
 
     background-image: url('/static/Flat-Color-Gradient-Triangles.png'); 
 
     width: 430px; 
 
     height: 763px; 
 
     align-items: center; 
 
    } 
 

 
    h1 { 
 
     font-family: "Century Gothic", CenturyGothic, AppleGothic, sans-serif; 
 
    \t font-size: 45px; 
 
     font-color: #333333; 
 
    \t font-weight: bold; 
 
     margin: 0; 
 
     padding: 3px; 
 
     text-align: center; 
 
    } 
 

 
    h2 { 
 
     font-family: "Avant Garde", Avantgarde, "Century Gothic", CenturyGothic, AppleGothic, sans-serif; 
 
    \t font-size: 15px; 
 
    \t font-weight: bold; 
 
     margin: 0; 
 
     padding: 3px; 
 
     border: 1.5px 
 
    } 
 

 
    h3 { 
 
    \t font-family: Candara, Calibri, Segoe, "Segoe UI", Optima, Arial, sans-serif; 
 
    \t font-size: 14px; 
 
    \t font-weight: 100; 
 
     margin: 0; 
 
     border-top: 1px; 
 
     border-bottom: 1px; 
 
     padding: 3px; 
 
    } 
 

 
    .explicit{ 
 
     color: rgb(200, 0, 0); 
 
    } 
 

 
    .rank{ 
 
     font-weight: bold; 
 
    } 
 

 
    table { 
 
     border-collapse: collapse; 
 
     padding: 4px; 
 
    } 
 

 
    table, th, td { 
 
     padding: 5px; 
 
     border-bottom: 1px solid black; 
 
     color: white; 
 
     text-align: center; 
 
    } 
 

 
    th { 
 
     background-color: #121f1f; 
 
     border-left: #121f1f; 
 
     border-right:#121f1f; 
 
    } 
 

 
    td { 
 
     background-color: #253f3f; 
 
     border-left: #253f3f; 
 
     border-right: #253f3f; 
 

 
    } 
 

 
    input[type='text'] { 
 
     width: 100%; 
 
     padding: 6px 10px; 
 
     margin: 6px 0; 
 
     box-sizing: border-box; 
 
     border: 2px solid #ccc; 
 
     font-size: 14px; 
 
     border-radius: 10px; 
 
    } 
 

 
    input[type='text']:focus { 
 
     border: 3px solid red; 
 
    } 
 

 
    input[type = 'submit'] { 
 
     background-color: #4CAF50; 
 
     border: none; 
 
     color: white; 
 
     padding: 16px 32px; 
 
     text-decoration: none; 
 
     margin: 4px 2px; 
 
     width: 100%; 
 
    } 
 

 
    input[value="Up"] { 
 
     background-color: #4CAF50; 
 
     border: none; 
 
     color: white; 
 
     padding: 16px 32px; 
 
     text-decoration: none; 
 
     margin: 4px 2px; 
 
    } 
 

 
    input[value="Down"] { 
 
     background-color: rgb(200,0,0); 
 
     border: none; 
 
     color: white; 
 
     padding: 16px 32px; 
 
     text-decoration: none; 
 
     margin: 4px 2px; 
 
    } 
 

 
    input[value="Add"] { 
 
     border: 3px solid #4CAF50; 
 
     color: white; 
 
     padding: 16px 32px; 
 
     text-decoration: none; 
 
     margin: 4px 2px; 
 
    } 
 

 
    div.content { 
 
     width: 430px; 
 
     align-items: center; 
 
    } 
 

 
</style> 
 
</head> 
 
<body> 
 
<div class="content"> 
 
<h1>Public Playlist</h1> 
 

 

 
<form action = '/search_results' method="POST"> 
 
    <input placeholder="Artist:" type = 'text' name='artist'> </input> 
 
    <input placeholder="Album:" type = 'text' name='album'> </input> 
 
    <input placeholder="Track:" type = 'text' name='track'> </input> 
 
    <input type="submit" value="Submit!" id="search"/> 
 
</form> 
 

 
<table > 
 
    <tr> 
 
     <th><h2>Rank</h2></th> 
 
     <th><h2>Title</h2> 
 
      <h2>Author|Album</h2></th> 
 
     <th><h2>Score</h2></th> 
 
     <th><h2>Vote</h2></th> 
 
    </tr> 
 
    <tr> 
 
     <td><h3 type="bold">1</h3></td> 
 
     <td><h3>{{name}}</h3> 
 
      <h3>{{artist}}:{{album}}</h3></td> 
 
     <td><h3>{{ score }}</h3></td> 
 
     <form action="/vote" method="POST"> 
 
      <td> 
 
       <input type="button" name="vote" value="Up" id="up"> 
 
       <input type="button" name= "vote" value="Down" id="down"> 
 
      </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <td><h3 type="bold">2</h3></td> 
 
     <td><h3>{{name1}}</h3> 
 
      <h3>{{artist1}}:{{album1}}</h3></td> 
 
     <td><h3>{{ score1 }}</h3></td> 
 
     <form action="/" method="POST"> 
 
      <td> 
 
       <input type="button" name="vote1" value="Up" id="up"> 
 
       <input type="button" name= "vote1" value="Down" id="down"> 
 
      </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <td><h3 type="bold">3</h3></td> 
 
     <td><h3>{{name2}}</h3> 
 
      <h3>{{artist2}}:{{album2}}</h3></td> 
 
     <td><h3>{{ score2 }}</h3></td> 
 
     <form action="/vote" method="POST"> 
 
      <td> 
 
       <input type="button" name="vote2" value="Up" id="up"> 
 
       <input type="button" name= "vote2" value="Down" id="down"> 
 
      </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <td><h3 type="bold">4</h3></td> 
 
     <td><h3>{{name3}}</h3> 
 
      <h3>{{artist3}}:{{album3}}</h3></td> 
 
     <td><h3>{{ score3 }}</h3></td> 
 
     <form action="/vote" method="POST"> 
 
      <td> 
 
       <input type="button" name="vote3" value="Up" id="up"> 
 
       <input type="button" name= "vote3" value="Down" id="down"> 
 
      </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <td><h3 type="bold">5</h3></td> 
 
     <td><h3>{{name4}}</h3> 
 
      <h3>{{artist4}}:{{album4}}</h3></td> 
 
     <td><h3>{{ score4 }}</h3></td> 
 
     <form action="/vote" method="POST"> 
 
      <td> 
 
       <input type="button" name="vote4" value="Up" id="up"> 
 
       <input type="button" name= "vote4" value="Down" id="down"> 
 
      </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <td><h3 type="bold">6</h3></td> 
 
     <td><h3>{{name5}}</h3> 
 
      <h3>{{artist5}}:{{album5}}</h3></td> 
 
     <td><h3>{{ score5 }}</h3></td> 
 
     <form action="/vote" method="POST"> 
 
      <td> 
 
       <input type="button" name="vote5" value="Up" id="up"> 
 
       <input type="button" name= "vote5" value="Down" id="down"> 
 
      </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <td><h3 type="bold">7</h3></td> 
 
     <td><h3>{{name6}}</h3> 
 
      <h3>{{artist6}}:{{album6}}</h3></td> 
 
     <td><h3>{{ score6 }}</h3></td> 
 
     <form action="/vote" method="POST"> 
 
      <td> 
 
       <input type="button" name="vote6" value="Up" id="up"> 
 
       <input type="button" name= "vote6" value="Down" id="down"> 
 
      </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <td><h3 type="bold">8</h3></td> 
 
     <td><h3>{{name7}}</h3> 
 
      <h3>{{artist7}}:{{album7}}</h3></td> 
 
     <td><h3>{{ score7 }}</h3></td> 
 
     <form action="/vote" method="POST"> 
 
      <td> 
 
       <input type="button" name="vote7" value="Up" id="up"> 
 
       <input type="button" name= "vote7" value="Down" id="down"> 
 
      </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <td><h3 type="bold">9</h3></td> 
 
     <td><h3>{{name8}}</h3> 
 
      <h3>{{artist8}}:{{album8}}</h3></td> 
 
     <td><h3>{{ score8 }}</h3></td> 
 
     <form action="/vote" method="POST"> 
 
      <td> 
 
       <input type="button" name="vote8" value="Up" id="up"> 
 
       <input type="button" name= "vote8" value="Down" id="down"> 
 
      </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <td><h3 type="bold">10</h3></td> 
 
     <td><h3>{{name9}}</h3> 
 
      <h3>{{artist9}}:{{album9}}</h3></td> 
 
     <td><h3>{{ score9 }}</h3></td> 
 
     <form action="/vote" method="POST"> 
 
      <td> 
 
       <input type="button" name="vote9" value="Up" id="up"> 
 
       <input type="button" name= "vote9" value="Down" id="down"> 
 
      </td> 
 
     </form> 
 
    </tr> 
 
</table> 
 
<script> 
 
setTimeout(function() {location.reload() },60000); 
 
</script> 
 
</div> 
 
</body> 
 
</html>

search_results.html

<!DOCTYPE html> 
 
<html lang="en"> 
 

 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>Title</title> 
 
    <style> 
 
    body { 
 
     font-family: sans-serif; 
 
     background-image: url('/static/Flat-Color-Gradient-Triangles.png'); 
 
     width: 640px; 
 
     height: 1136px; 
 
    } 
 
    h1 { 
 
     font-family: "Century Gothic", CenturyGothic, AppleGothic, sans-serif; 
 
     font-size: 45px; 
 
     font-color: #333333; 
 
     font-weight: bold; 
 
     margin: 0; 
 
     padding: 3px; 
 
     text-align: center; 
 
    } 
 
    h2 { 
 
     font-family: "Avant Garde", Avantgarde, "Century Gothic", CenturyGothic, AppleGothic, sans-serif; 
 
     font-size: 15px; 
 
     font-weight: bold; 
 
     margin: 0; 
 
     padding: 3px; 
 
     border: 1.5px 
 
    } 
 
    h3 { 
 
     font-family: Candara, Calibri, Segoe, "Segoe UI", Optima, Arial, sans-serif; 
 
     font-size: 14px; 
 
     font-weight: 100; 
 
     margin: 0; 
 
     border-top: 1px; 
 
     border-bottom: 1px; 
 
     padding: 3px; 
 
    } 
 
    .explicit { 
 
     color: rgb(200, 0, 0); 
 
    } 
 
    .rank { 
 
     font-weight: bold; 
 
    } 
 
    table { 
 
     border-collapse: collapse; 
 
     padding: 4px; 
 
    } 
 
    table, 
 
    th, 
 
    td { 
 
     padding: 5px; 
 
     border-bottom: 1px solid black; 
 
     color: white; 
 
     text-align: center; 
 
    } 
 
    th { 
 
     background-color: #121f1f; 
 
     border-left: #121f1f; 
 
     border-right: #121f1f; 
 
    } 
 
    td { 
 
     background-color: #253f3f; 
 
     border-left: #253f3f; 
 
     border-right: #253f3f; 
 
    } 
 
    input[type='text'] { 
 
     width: 100%; 
 
     padding: 6px 10px; 
 
     margin: 6px 0; 
 
     box-sizing: border-box; 
 
     border: 2px solid #ccc; 
 
     font-size: 14px; 
 
     border-radius: 10px; 
 
    } 
 
    input[type='text']:focus { 
 
     border: 3px solid red; 
 
    } 
 
    input[type='submit'] { 
 
     background-color: #4CAF50; 
 
     border: none; 
 
     color: white; 
 
     padding: 16px 32px; 
 
     text-decoration: none; 
 
     margin: 4px 2px; 
 
     width: 100%; 
 
    } 
 
    input[value="Up"] { 
 
     background-color: #4CAF50; 
 
     border: none; 
 
     color: white; 
 
     padding: 16px 32px; 
 
     text-decoration: none; 
 
     margin: 4px 2px; 
 
    } 
 
    input[value="Down"] { 
 
     background-color: rgb(200, 0, 0); 
 
     border: none; 
 
     color: white; 
 
     padding: 16px 32px; 
 
     text-decoration: none; 
 
     margin: 4px 2px; 
 
    } 
 
    input[name="Add"] { 
 
     border: 3px solid #4CAF50; 
 
     color: white; 
 
     background-color: #253f3f; 
 
     padding: 16px 32px; 
 
     text-decoration: none; 
 
     font-weight: bold; 
 
     margin: 4px 2px; 
 
    } 
 
    </style> 
 
</head> 
 

 
<body> 
 

 
    <h1>Public Playlist</h1> 
 

 
    <table> 
 
    <tr> 
 
     <th> 
 
     <h2>Rank</h2> 
 
     </th> 
 
     <th> 
 
     <h2>Title</h2> 
 
     <h2>Author|Album</h2> 
 
     </th> 
 
     <th> 
 
     <h2>Score</h2> 
 
     </th> 
 
     <th> 
 
     <h2>Add</h2> 
 
     </th> 
 
    </tr> 
 
    <tr> 
 
     <form action="/add" method="GET"> 
 
     <td> 
 
      <h3 type="bold">1</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{name}}</h3> 
 
      <h3>{{artist}}:{{album}}</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{ score }}</h3> 
 
     </td> 
 
     <td> 
 
      <input type="button" name="Add" value="Add" id="Add"> 
 
     </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <form action="/add" method="GET"> 
 
     <td> 
 
      <h3 type="bold">2</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{name1}}</h3> 
 
      <h3>{{artist1}}:{{album1}}</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{ score1 }}</h3> 
 
     </td> 
 

 
     <td> 
 
      <input type="button" name="Add" value="Add1" id="Add1"> 
 
     </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <form action="/add" method="GET"> 
 

 
     <td> 
 
      <h3 type="bold">3</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{name2}}</h3> 
 
      <h3>{{artist2}}:{{album2}}</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{ score2 }}</h3> 
 
     </td> 
 

 
     <td> 
 
      <input type="button" name="Add" value="Add2" id="Add2"> 
 
     </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <form action="/add" method="GET"> 
 
     <td> 
 
      <h3 type="bold">4</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{name3}}</h3> 
 
      <h3>{{artist3}}:{{album3}}</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{ score3 }}</h3> 
 
     </td> 
 

 
     <td> 
 
      <input type="button" name="Add" value="Add3" id="Add3"> 
 
     </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <form action="/add" method="GET"> 
 
     <td> 
 
      <h3 type="bold">5</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{name4}}</h3> 
 
      <h3>{{artist4}}:{{album4}}</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{ score4 }}</h3> 
 
     </td> 
 

 
     <td> 
 
      <input type="button" name="Add" value="Add4" id="Add4"> 
 
     </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <form action="/add" method="GET"> 
 
     <td> 
 
      <h3 type="bold">6</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{name5}}</h3> 
 
      <h3>{{artist5}}:{{album5}}</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{ score5 }}</h3> 
 
     </td> 
 

 
     <td> 
 
      <input type="button" name="Add" value="Add5" id="Add5"> 
 
     </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <form action="/add" method="GET"> 
 
     <td> 
 
      <h3 type="bold">7</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{name6}}</h3> 
 
      <h3>{{artist6}}:{{album6}}</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{ score6 }}</h3> 
 
     </td> 
 
     <td> 
 
      <input type="button" name="Add" value="Add6" id="Add6"> 
 
     </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <form action="/add" method="GET"> 
 
     <td> 
 
      <h3 type="bold">8</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{name7}}</h3> 
 
      <h3>{{artist7}}:{{album7}}</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{ score7 }}</h3> 
 
     </td> 
 
     <td> 
 
      <input type="button" name="Add" value="Add7" id="Add7"> 
 
     </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <form action="/add" method="GET"> 
 
     <td> 
 
      <h3 type="bold">9</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{name8}}</h3> 
 
      <h3>{{artist8}}:{{album8}}</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{ score8 }}</h3> 
 
     </td> 
 

 
     <td> 
 
      <input type="button" name="Add" value="Add8" id="Add8"> 
 
     </td> 
 
     </form> 
 
    </tr> 
 
    <tr> 
 
     <form action="/add" method="GET"> 
 
     <td> 
 
      <h3 type="bold">10</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{name9}}</h3> 
 
      <h3>{{artist9}}:{{album9}}</h3> 
 
     </td> 
 
     <td> 
 
      <h3>{{ score9 }}</h3> 
 
     </td> 
 

 
     <td> 
 
      <input type="button" name="Add" value="Add9" id="Add9"> 
 
     </td> 
 
     </form> 
 
    </tr> 
 
    </table> 
 
</body> 
 

 
</html>

私はその後、肝炎

@app.route('/add', methods=['GET']) 
def addingSongs(): 
     if request.method == 'GET': 
      btnID = request.form['btn'] 
     if btnID == 'Add0': 
      songResults[0].upVote() 
      addedSongs.append(songResults[0]) 
      songResults.remove(0) 
     if btnID == 'Add1': 
      songResults[1].upVote() 
      addedSongs.append(songResults[1]) 
      songResults.remove(1) 
     return render_template('base.html') 

のでbase.htmlがその負荷最初のページである:E Pythonのファイルは、関連する方法であるprojectfalcon.py。アーティスト名を入力して曲を検索すると、結果が表示されるsearch_results.htmlに移動します。ユーザーが追加ボタンをクリックできるようにしようとしていて、曲はprojectfalcon.pyファイルのリストに追加されます。クリックすると、base.htmlファイルに戻り、プレイリストにある曲をリロードして、間違っていることがわかりません。私は何度もグーグルを行ってきましたが、正しい言葉を見つけられなかったかもしれません。どんな助けもありがとうございます。

答えて

0

最も顕著な問題は、btn変数にアクセスしていることです。あなたのフォームがGETリクエストを送信するので、このようにアクセスする必要があります:

btnID = request.args.get('btn', '') 

は、それとは別に、私はあなたが addedSongsリストを格納しているかを理解していません。フラスココンテキストはリクエストに限定されているので、pythonグローバル名前空間は使用しないでください。コンテキスト変数(フラスコ内のグローバル変数)を作成するか、ユーザーデータをデータベースに格納するのが最も簡単な方法です。

フットサルチュートリアルthisは、最初からウェブアプリを作成するための完全なガイドです。おそらく、基本的な問題を解決し、あなたの問題に「正しい言葉を見つける」ことができるようにするには、多少の使用の可能性があります。 :)

乾杯。

+0

これは私の問題にどうやって来るかです。サイトをロードすると、base.htmlに移動します。そこからボタンをクリックすると、search_results.htmlファイルに移動し、いくつかのデータが表示されます。私は10のボタンのうちの1つをクリックできるようにしたいと思うし、クリックするボタンに応じて2つのことをする。 1)追加されたソングリストにそのソングを追加します。2)ユーザーはbase.htmlに戻ります。だから、それぞれのボタンは同じ名前の "Add"を持っていますが、各値は "Add0"から "Add1"などに変わります。どのボタンが押されたのかを知りたいのです。 –

+0

なぜ私はこれ以前に考えなかったのですか?しかし、私はaddSongs()関数のすぐ下にprint( 'testing')を置いて、追加ボタンをクリックすると印刷しません。したがって、私はこのメソッドが決して呼び出されていないと思います。私の可能な限りのことが間違っていますか? –

+0

この方法を試してデバッグするのはかなり難しいです。あなたがやりたいことから、ウェブの仕組みを理解することをお勧めします。どのようにajax、ルーティング、リダイレクト、フォーム作業。あなたが望むやり方でフラスコを動作させるほうがはるかに簡単です。また、フラスコのチュートリアルをチェックアウトして、 'url_for'リダイレクト、簡単なテンプレート、フォームの配列ベースの値、ajax呼び出しなどの基本的な概念に慣れてください。[this](https://blog.miguelgrinberg.com)/post/the-flask-mega-tutorial-part-i-hello-world)チュートリアル。 – oxalorg

関連する問題