Pythonスクリプトの実行中に、次のタイプエラーが発生しました。
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1701, in __call__
return self.wsgi_app(environ, start_response)
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1689, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1687, in wsgi_app
response = self.full_dispatch_request()
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1360, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1358, in full_dispatch_request
rv = self.dispatch_request()
File "/Library/Python/2.7/site-packages/Flask-0.9-py2.7.egg/flask/app.py", line 1344, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/Zach/Dropbox/stock/stk.py", line 31, in stock
url="http://finance.yahoo.com/d/quotes.csv?s="+stock+"&f=snl1"
TypeError: cannot concatenate 'str' and 'function' objects
問題の原因となっている行はurl="http://finance.yahoo.com/d/quotes.csv?s="+stock+"&f=snl1"
、具体的には変数のようです。stock.
調査後、以前のエラーからわかったことから、原因は変数の定義方法に問題があるはずだと推測しました(文字列ではないか、定義されていない可能性があります)。まったく); そうは言っても、私はこの変数を前の関数で文字列として定義します。
@app.route('/', methods=['GET', 'POST'])
def home_search():
if request.method == 'POST':
stock = request.form['s']
return redirect(url_for('stock'))
return render_template('stk.html')
そして、これが関数です。ここで、stock
以前に定義された値を呼び出して表示しようとします。
@app.route('/stock', methods=['GET', 'POST'])
def stock():
print type(stock)
url="http://finance.yahoo.com/d/quotes.csv?s="+stock+"&f=snl1"
text=urllib2.urlopen(url).read()
return render_template('stock.html')
しかし、それは@app.route
私がそれを呼ぶときとは異なる方法で定義されています。Pythonの変数は、そのように保存して呼び出すべきではありませんか、それとも新しいページが読み込まれるときに変数が空になりますか?この場合、回避策またはより良いアプローチの提案をいただければ幸いです。