问题
I have a dataset like this here:
df=
A B C
house 50 50
money 80 50
bed 20 60
And this is my code:
@app.route('/index', methods=['POST'])
def index():
if request.method == 'POST'
inpt = request.form['inpt']
for text in df['A']:
if text == inpt:
give_text = df[df['A'] == inpt]
give_text = give_text.drop(['A'], axis =1)
for column in give_text:
column_edit = give_text[column]
column_edit = column_edit * 5
return render_template('index.html', numbers = column_edit)
And how would it change if this is my code:
@app.route('/index', methods=['POST'])
def index():
if request.method == 'POST'
inpt = request.form['inpt']
for text in df['A']:
if text == inpt:
give_text = df[df['A'] == inpt]
give_text = give_text.drop(['A'], axis =1)
for column in give_text:
column_edit = give_text[column]
column_edit = column_edit * 5
if ".." in column_edit: #nvm which symbol
column_edit = column_edit + "meters"
return render_template('index.html', numbers = column_edit)
And my code on my HTML file:
<form> action ='/index' method = 'post'>
<p>< input type = 'text' name='inpt'/> </p>
<p>< input type = 'submit' name='submit'/> </p>
<h3>{{numbers}}</h3>
</form>
But why he is always printing on my website only the first anwser of my loop?
If I write 'house' for the input. I wanted to print the whole calculated dataset on my website like this:
output:
250
250
回答1:
if numbers is an iterable, you may not be able to output it in html the way you've done. You may do this:
Python-Flask
@app.route('/index', methods=['POST'])
def index():
if request.method == 'POST'
inpt = request.form['inpt']
for text in df['A']:
if text == inpt:
give_text = df[df['A'] == inpt]
give_text = give_text.drop(['A'], axis =1)
my_data = []
for column in give_text:
column_edit = give_text[column]
column_edit = column_edit * 5
my_data.append(column_edit)
length = list(range(0, len(my_data))) #create a list for length of items in column_edit, this list will server as indicies for iteration through elements of column_edit
return render_template('index.html', numbers = my_data, length=length)
HTML
<form> action ='/index' method = 'post'>
<p>< input type = 'text' name='inpt'/> </p>
<p>< input type = 'submit' name='submit'/> </p>
{% for i in blenr %}
<h3>{{numbers[i]}}</h3>
{% endfor %}
回答2:
We must put the return outside the loop
@app.route('/index', methods=['POST'])
def index():
if request.method == 'POST'
inpt = request.form['inpt']
for text in df['A']:
if text == inpt:
give_text = df[df['A'] == inpt]
give_text = give_text.drop(['A'], axis =1)
numbers_list = []
column_list_with_some_text = []
for column in give_text:
column_edit = give_text[column]
if "some text" in column_edit:
column_list_with_some_text.append(column_edit + "There was some text")
column_edit = column_edit * 5
numbers_list.append(column_edit)
return render_template('index.html', numbers= numbers_list, column_list_with_some_text= column_list_with_some_text )
来源:https://stackoverflow.com/questions/63327398/python-flask-for-loop-doesnt-print-all-of-the-outputs