Возвращать данные из Джинджи во Фляску? - PullRequest
0 голосов
/ 29 мая 2019

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

{% 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)

1 Ответ

0 голосов
/ 29 мая 2019

Просто используйте для этого обычный 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, чтобы сделать то же самое

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...