Возврат данных из jinja в Flask?

Сейчас у меня есть список ингредиентов, который выглядит так:

{% block content %}

<form method = "POST">
    <h1>DATA</h1>
    {% for c in data %}
    <h1>{{ c.i_id }} {{ c.name }}</h1>
    {% endfor %}
</form>
{% endblock %}

У меня возникли проблемы с отображением каждого элемента как кликабельного, чтобы пользователь щелкнул один и добавил его в таблицу БД «userIngredients» со значениями u_id и i_id. u_id уже хранится в session['u_id'], однако i_id — это то, что я пытаюсь извлечь из интерактивных элементов, поэтому я могу выполнять следующий запрос при каждом щелчке: 'INSERT INTO userIngredients VALUES(%s,%s)',(session[u_id],i_id)

@app.route('/addingredients', methods=['GET','POST'])
def addingredients():
    c = sq.connection.cursor()
    result = c.execute('SELECT * FROM Ingredients')
    data = c.fetchall()
    return render_template('user/addIngredients.html', data=data)
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто используйте для этого обычный HTML.

<a href = "/addingredients/{% session['u_id'] %}/{% c.i_id %}">{{ c.i_id }} {{ c.name }}</a>

Нажатие на это должно вызвать ответ на вашу конечную точку, где вы можете использовать следующий код, чтобы добавить ее в базу данных.

@app.route('/addingredients/<user_id>/<ingredient_id>')
def add_ingredients(user_id, ingredient_id):
    # Important to cast the strings here to integers
    # both as protection from SQL injection and to make sure
    # the values are inserted as actual integers
    user_id = int(user_id)
    ingredient_id = int(ingredient_id)
    c = sq.connection.cursor()

    c.execute('INSERT INTO userIngredients VALUES(%s,%s)', (user_id,ingredient_id))

    # Then if you want, you can re-render the template
    result = c.execute('SELECT * FROM Ingredients')
    data = c.fetchall()
    return render_template('user/addIngredients.html', data=data)

Я бы переместил рендеринг в другую конечную точку, чем /addingredients, так как имя не совсем соответствует шаблону. Если вы можете, я бы предложил использовать либо RESTful /ingredients/add, чтобы добавить новый ингредиент и /ingredients, чтобы получить список всех ингредиентов, либо /getingredients и /addingredients, чтобы сделать то же самое.

Другие вопросы по теме