J'ai eu quelques problèmes avec /quote
dans PSET 7 de CS50. Chaque fois que je vais dans le site de la finance CS50, il retourne:CS50 PSET7 Quote: 'NoneType' Erreur
AttributeError: 'NoneType' object has no attribute 'startswith'
Je ne sais pas ce que cela signifie, ni comment y remédier. Il semble aller automatiquement à «None» dans la fonction de recherche, mais je ne sais pas pourquoi. Si quelqu'un pouvait m'aider, je l'apprécierais vraiment!
Ceci est ma part de citation de application.py:
@app.route("/quote", methods=["GET", "POST"])
@login_required
def quote():
"""Get stock quote."""
if request.method == "POST":
symbol = request.args.get("symbol")
quote = lookup(symbol)
return render_template("quoted.html", name=quote)
else:
return render_template("quote.html")
Ceci est mon helpers.py, qui est pas censé être changé:
def lookup(symbol):
"""Look up quote for symbol."""
# reject symbol if it starts with caret
if symbol.startswith("^"):
return None
# reject symbol if it contains comma
if "," in symbol:
return None
# query Yahoo for quote
# http://stackoverflow.com/a/21351911
try:
url = "http://download.finance.yahoo.com/d/quotes.csv?f=snl1&s={}".format(symbol)
webpage = urllib.request.urlopen(url)
datareader = csv.reader(webpage.read().decode("utf-8").splitlines())
row = next(datareader)
except:
return None
# ensure stock exists
try:
price = float(row[2])
except:
return None
# return stock's name (as a str), price (as a float), and (uppercased) symbol (as a str)
return {
"name": row[1],
"price": price,
"symbol": row[0].upper()
}
Enfin, voici ma citation. html:
{% extends "layout.html" %}
{% block title %}
Quote
{% endblock %}
{% block main %}
<form action="{{ url_for('quote') }}" method="post">
<fieldset>
<div class="form-group">
<input autocomplete="off" autofocus class="form-control" name="symbol" placeholder="symbol" type="symbol"text"/>
</div>
<div class="form-group">
<button class="btn btn-default" type="submit">Search for Quote</button>
</div>
</fieldset>
</form>
{% endblock %}
À l'avenir, veuillez inclure la trace complète de la pile, y compris les numéros de ligne et les noms de fichiers, et pas seulement le message d'erreur. –