我现在所拥有的是显示的配料列表,如下所示:
{% block content %}
<form method="POST">
<h1>DATA</h1>
{% for c in data %}
<h1>{{ c.i_id }} {{ c.name }}</h1>
{% endfor %}
</form>
{% endblock %}
我遇到的麻烦是将每个项目显示为可单击项,以使用户单击该项目并将其添加到具有值u_id
和i_id
的数据库表“ userIngredients”中。 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)
答案 0 :(得分:0)
为此只需使用常规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
进行操作同一件事