Как повторно использовать значения данных сеанса

#python #html #jquery #flask

Вопрос:

Я новичок в использовании flask и просто создаю чрезвычайно простое приложение.

У меня есть страница, на которой я прошу пользователей ввести текст и тип (они могут добавить несколько ответов), затем я использую переменные сеанса для отображения их входных данных в таблице на той же странице.

Но по какой-то причине, когда я пытаюсь использовать одну из переменных сеанса в последующих частях кода, она просто возвращается пустой, в то время как другая возвращается абсолютно нормально

session['test'] Работает нормально, но это то session['type'] , что перестает работать. Например, я получаю значения, необходимые для get_name функции, но когда я просто пытаюсь отобразить ее в шаблоне или использовать в других функциях, она просто возвращает пустой список

 def get_name(key_val, val_val):
    final_data = {}
    for key in key_val:
        for value in val_val:
            final_data[key] = value
            val_val.remove(value)
            break
    return final_data

@app.route('/test', methods=['POST', 'GET'])
def test_page():
    if request.method == 'POST':
        test_data = request.form.getlist('test')
        session['test'] = test_data
        type_data = request.form.getlist('type')  --> value disappears in subsequent use
        session['type'] = type_data
        final_dict = get_name(session['test'], session['type'])
        return render_template('test.html', test_data = test_data, type_data=type_data, final_dict = final_dict)
    else:
        return render_template('test.html')
 

test.html (немного jQuery сверху используется для добавления последующих полей)

 {% extends 'base.html' %} {% block head %}
<title>Task Master</title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>

$(document).ready(function() {
  var max_fields      = 10; //maximum input boxes allowed
  var wrapper         = $(".input_fields_wrap"); //Fields wrapper
  var add_button      = $(".add_field_button"); //Add button ID
  
  var x = 1; //initlal text box count
  $(add_button).click(function(e){ //on add input button click
      e.preventDefault();
      if(x < max_fields){ //max input box allowed
          x  ; //text box increment
          $(wrapper).append('<div> <input id="test"  type="text" name="test"/> <select id="type"  name="type"><option value="Primary">Primary</option><option value="Secondary">Secondary</option></select> <a href="#" class="remove_field">Remove</a> </div>'); // add input boxes.
      }
  });
  
  $(wrapper).on("click",".remove_field", function(e){ //user click on remove text
      e.preventDefault(); $(this).parent('div').remove(); x--;
  })
});</script>


{% endblock %} {% block body %}
<h1>hello</h1>
<div>
<form action="/test" method="POST">
  <div class="input_fields_wrap">
  <button class="add_field_button">Add More Fields</button>
  <input type="text" name="test" id="test" />
  <select id="type" name="type">
    <option value="Primary">Primary</option>
    <option value="Competitor">Competitor</option>
  </select></div>
<div><input type="submit"/> 
</form>

<table>
  <tr>
    <th>Username</th>
    <th>type</th>
  </tr>
  {% if final_dict is not defined %}
    <p>Empty</p>
  {% else %}
    {% for key, value in final_dict.items() %}
    <tr>
      <td>{{ key }}</td>
      <td>{{ value }}</td>
    </tr>
    {% endfor %}
  {% endif %}
</table>
<div>
  <a href=/update_test>Submit</button></a>
</button>
</div>
{{ type_data }} "test"
{{ test_data }} "test"

{% endblock %}
 

Я предполагаю, что это как-то связано с HTML-шаблоном, так как в приложении оба рассматриваются как идентичные, но я, кажется, не могу этого понять