Python flask for loop doesn't print all of the outputs?

坚强是说给别人听的谎言 提交于 2020-08-20 16:04:09

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!