jinja2 Неопределенная ошибка: «результат» не определен | КОЛБА

#python #html #forms #flask #jinja2

Вопрос:

Я работаю с Фляжкой. У меня есть один маршрут, и я хочу перенаправить его на другой маршрут при нажатии кнопки, но я хочу передать аргумент. Это мой маршрут:

 @app.route('/actualize_product.html', methods=['GET', 'POST'])
def actualize_product():
    if request.method == 'POST':
        print("post")
        query1 = """
            SELECT id FROM BD.producto
            WHERE id="""   str(request.form['product_id'])
        conection = connect()
        resultt = conection.execute(query1)[0]
        print(resultt)
        return redirect(url_for('/edit_product.html', resultado = resultt)) #Line where I'm redirecting


    query = "SELECT * FROM BD.Producto ALLOW FILTERING; "
    conection = connect()
    result = conection.execute(query)
    return render_template('actualize_product.html', products = result)

 

И это тот маршрут, который я хочу, чтобы он был перенаправлен

 @app.route('/edit_product.html', methods=['GET', 'POST'])
def edit_product():
    print("edit")
    if request.method == 'POST':
        
        print("Im already here")

    return render_template('edit_product.html')
 

Проблема в том, что edit_product.html это файл, в котором я использую jinja2

       <h2>Id del producto: {{resultado.id}} </h2> <br>
      <form action="app.py" method="get" onsubmit="return formEsValido()">
        <input type= "hidden" value = "{{resultado.id}}" id = "id" name = "id">
        <label for="product_name"> Nuevo nombre del Producto: </label>
        <input type="text" name="product_name" id="product_name" class="form-control">
        <label for="product_price"> Nuevo precio del Producto: </label>
        <input type="text" name="product_price" id="product_price" class="form-control">
        <label for="descripction"> Nueva descripcion del Producto: </label>
        <input type="text" name="description" id="description" class="form-control">
        <label for="stock">Nuevo stock del Producto</label>
        <input type="text" name="stock" id="stock" class="form-control">
        <br>  
        <button class="btn btn-primary"id="index-buttons" type="submit">Editar Producto</button>              
      </form>
  </div>
 

Если я использую render_template вместо перенаправления, это не сработает, потому что после нажатия на эту кнопку маршрут будет /actualize_product.html и я хочу, чтобы он изменился на /edit_product.html» поскольку у меня там есть форма, я не знаю, как передать эту переменную под названием «resultado» в jinja2 с помощью перенаправления.

Ответ №1:

Если все, что вам нужно, — это идентификатор, вы можете передать его в качестве параметра url.

 @app.route('/actualize')
def actualize():
    return redirect(url_for('edit', id=123))

@app.route('/edit')
def edit():
    id = request.args.get('id')
    return render_template('edit.html', id=id)