How to get input data input Jinja2?

In my HTML file, I have:

  <table>
      {% for user in user_data_html %}
      <tr>
         <td>
            <input id="firstname" name="firstname" type="text" value='{{ user.FirstName }}' />  
         </td>
         <td>
             <input name="submit" type="submit" value='update' />
         </td>
     </tr>
     {% else %}
     <tr><td>no user found</td></tr>
     {% endfor %}
 </table>

I want to change the username on the webpage by clicking the refresh button on each line. But I always get the first "first name" using the following python code in the backend:

firstname = request.form['firstname']

How can I solve this problem?

+4
source share
2 answers

Forms get confused if you use the same name for each input name. You can create a separate form around each cell in the table with the first name, or you can use the jinja2 loop index to create unique input names ...

<input id="firstname{{ loop.index }}" name="firstname{{ loop.index }}" type="text" value='{{ user.FirstName }}' />

Hope this helps!

+5
source

request.form werkzeug.datastructures.MultiDict. getlist:

a_firstname = request.form['firstname']
all_firstnames = request.form.getlist('firstname')

, , , flask.Request parameter_storage_class ImmutableOrderedMultiDict. request_class Flask:

from flask import Flask, Request
from werkzeug.datastructures import ImmutableOrderedMultiDict

class OrderedRequest(Request):
    parameter_storage_class = ImmutableOrderedMultiDict

app = Flask(__name__)
app.request_class = OrderedRequest

request.form.getlist('firstname') , ( , HTML).

+1

Source: https://habr.com/ru/post/1543116/


All Articles