2016-02-07 39 views
0

林獲得項目從顯示HTML表單的Python瓶從HTML選擇表單

無法得到任何東西,我總是得到"ValueError: View function did not return a response"

有人可以幫助我在這裏嗎?我已經嘗試了可以​​在網上找到的request.get的每個變體。此外,如果我指定我的表單應該使用後,它使用無論如何 - 任何人都知道這是爲什麼?

進出口新的燒瓶中,所以請原諒我的無知!

在此先感謝。

蟒蛇文件(routes.py)

from flask import Flask, render_template, request 
import os 
app = Flask(__name__)  
musicpath = os.listdir(r"C:\Users\Oscar\Music\iTunes\iTunes Media\Music") 
lsize = str(len(musicpath)) 
looper = len(musicpath) 


@app.route('/') 
def home(): 
    return render_template('home.html', lsize=20, looper=looper, musicpath=musicpath) 

@app.route('/pop', methods=['POST', 'GET']) 
def pop(): 
    if request.method == "GET": 
     text = request.args.get('som') 
     return text 
     #Have tried every variation of request.get 

@app.route('/about') 
def about(): 
    name = "Hello!" 
    return render_template('about.html', name=name) 



if __name__ == '__main__': 
    app.run(debug=True) 

HTML文件(home.html做爲)

{% extends "layout.html" %} 
{% block content %} 
    <div class="jumbo"> 
    <h2>A Music app!<h2> 
    </div> 
    <div> 
     {% if lsize %} 
      <form action="/pop"> 
       <select id="som" size="20"> 
       {% for i in range(looper):%} 
        <option value="{{i}}">{{ musicpath[i] }}</option> 
       {% endfor %} 
       </select> 
      </form> 
     {% endif %} 
    </div> 
    <a href="{{ url_for('pop') }}">Select,</a> 

{% endblock %} 

回答

1

的問題是,你的HTML表單沒有名稱。 request.args.get("som")需要一個HTML表單輸入名稱"som"

<select name="som" id="som" size="20"> 

只要改變該行並添加姓名。該表單對id屬性不感興趣。

+0

對不起,我最初嘗試了它的名字,只是再次 - 沒有改變錯誤相同 – user3788339

-1

你的表單操作是/pop。這意味着,如果您提交的形式,它會做一個POST請求地址/pop。您的代碼只會返回GET請求的值,因此Flask會抱怨您不會返回任何內容。編寫一些代碼來處理POST請求並返回文本或呈現的模板。

順便說一句,在GET你的代碼是指request.args.get('som');這會爲您提供請求參數(即在URL中),而不是從表單中獲取參數。 som的形式,所以你不能這樣引用它。

+0

形式的默認方法是'GET'而不是'POST' [鏈接](http:// www。 w3schools.com/tags/att_form_method.asp) – Wombatz

+0

@ Wombatz愛,是我不好。這會教會我不要正確閱讀代碼。感謝您的更正。 –

0

你不指定形式的方法,你必須這樣做!例如使用這個<form method="POST action"/pop">