Как правильно вызвать мою «удаленную» конечную точку с идентификатором и удалить строку из SQL по клику пользователя? - PullRequest
0 голосов
/ 20 мая 2019

Это код Python, который я написал для отображения таблицы и удаления строки из таблицы. Дисплейный стол работает нормально. Но я не могу удалить строку из таблицы.

Как правильно отправить идентификатор на конечную точку?

@app.route('/showTable')
def showTable():

    cursor2.execute("select * from web2")
    data = cursor2.fetchall()
    #data.set_index(['id'], inplace=True)
    #data.index.name = None
    return render_template('showTable.html',data=data)


@app.route('/showTable/<id>', methods=['GET','POST'])
def delete_row():
    if request.method=="POST":
        id=request.form.get("id")
        #cursor3.execute('delete from web2 where id = ?', [request.form['row_to_delete']])
        cursor3.execute('delete from web2 where id= ?', [id])
        conn.commit()
    #data = cursor3.fetchall()
    #return '<h1>New record  has been deleted!</h1>'
    flash('Record Deleted', 'success')
    #return redirect(url_for('showTable'))
    return render_template('showTable.html',id=id)

if __name__ == "__main__":
    #app.debug = True
    app.run(debug=True,port=8080)

#HTML code for the same:-

<link rel="stylesheet" href="{{url_for('.static', filename='signin.css')}}">

<a href="{{ url_for('.signup') }}"> New Duplicate Account </a>

<table border="1" cellpadding="2" cellspacing="0">
    {% for row in data %}
        <tr>
        {% for d in row %}
            <td>{{ d }}</td>
        {% endfor %}
        <form action="{{ url_for('delete_row') }}" method="post" action="/showTable">
            <input type=hidden value="{{ id }}" name="row_to_delete"></input>
            <td><button class="btn btn-lg btn-primary btn-block" type="submit">Delete</button></td>
        </form>
        </tr>
    {% endfor %}
</table>
<p></p>

   werkzeug.routing.BuildError: Could not build url for endpoint 'delete_row'. Did you forget to specify values ['id']?

1 Ответ

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

попробуйте изменить @ app.route, как показано ниже:

@app.route('/showTable/<int:id>', methods=['DELETE'])

если это не помогло, вам нужно заменить еще несколько строк кода:

def delete_user(id):
    user = Member.query.get(id)
    db.session.delete(user)
    db.session.commit()
    return jsonify({'message': '{} has been deleted'.format(user.username)})

надеюсь, что это будет работать

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