Je viens de recevoir l'erreur de type suivant lors de l'exécution de mon script Python:Ce qui pourrait causer l'erreur TypeError: impossible de concaténer les objets 'str' et 'function'?
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
La ligne qui cause le problème semble être url="http://finance.yahoo.com/d/quotes.csv?s="+stock+"&f=snl1"
, en particulier la stock.
variable après la recherche et du peu que je sais d'erreurs précédentes, je déduis que la cause doit être un problème avec la façon dont la variable est définie (ce n'est pas une chaîne, ou peut-être pas du tout); Cela dit, je décris cette variable comme une chaîne dans la fonction avant:
@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')
Et voici la fonction, stock
où je tente d'appeler et afficher la valeur précédemment définie:
@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')
Cependant, il est défini dans un autre @app.route
que lorsque je l'appelle. Les variables dans Python ne devraient-elles pas être stockées et rappelées comme cela, ou les variables sont-elles vidées lors du chargement de nouvelles pages? Si c'est le cas, toutes les suggestions pour un travail ou une meilleure approche seraient grandement appréciées.
Testez le type de 'stock' pour être sûr:' type (stock) ' – gecco
Je ne suis pas un expert en flask, mais une fois que vous quittez la fonction' home_search() ',' stock' sera ramassé garbage, De plus, vous ne pouvez pas y accéder en dehors de la fonction de toute façon. –
Je pense que le problème est ,, vous traitez 'stock' comme une chaîne dans la ligne' return redirect (url_for ('stock')) ' – avasal