首页 > 解决方案 > 使用按钮通过烧瓶运行 SQL 查询

问题描述

在用户页面上,我有一个“添加”按钮,它应该向另一个用户发送添加请求。按钮的烧瓶代码使用friend_request表,该表需要存储在会话[user_ID]中的请求发送者的用户ID和存储在data.uid(HTML中)中的接收者,该ID来自用户页面上的“数据” () 路由,用户页面的 Flask 代码:

@app.route('/user/<user_id>')
def userpage(user_id):
    user_id = int(user_id)
    c = sq.connection.cursor()

    try:
        result = c.execute('SELECT * FROM users WHERE uid = %s ',(user_id))
    except:
        print('Error','info')
    data = c.fetchall()

    return render_template('user/profpage.html', data=data[0]) 

用户页面 HTML:

<h1>Name here</h1>
<p> Description, of a really cool person</p>

<p> {{ data.fname }}</p>
<p> {{ data.lname }}</p>
<p> {{ data.email }}</p>
{% if session['user_ID'] != data.uid %}
    <a href="/user/add/{{ data.uid }}" class="btn btn-primary" name="Add">Add</a>
{% endif %}

添加按钮的烧瓶代码:

@app.route('/user/add/<user_id>')
def useradd(user_id):
    user_id = int(user_id)
    c = sq.connection.cursor()
    try:
        result = c.execute('INSERT INTO friend_requests(req_by,req_to) VALUES (%s,%s) ',(session['user_ID'],user_id))
        sq.connection.commit()
    except:
        print('Error','info')

    return redirect(url_for('userpage'))

当我尝试实现它时,它会将信息输入到数据库表中但是,我收到以下错误“werkzeug.routing.BuildError:无法为端点'userpage'构建url。你是否忘记指定值['user_id']? "

标签: pythonflask

解决方案


代码

return redirect(url_for('userpage'))

try to use route('/user/') to build URL but you have only route('/user/<user_id>') which expects user_id as parameter - so you have to add this user_id in url_for

url_for('userpage', user_id=user_id)

or

url_for('userpage', user_id=session['user_ID'])

推荐阅读