8

I'm working with a Flask framework, and am trying to delete an entry from the database. The code below gives this error: "The method is not allowed for the requested URL."

In the html:

<form action="{{ url_for('delete_entry', id=entry.id) }}" method="POST">
     <input type="hidden" name="_method" value="DELETE" />
     <input type="submit" value="Delete entry" />
</form>

In the py:

@app.route('/delete', methods=['DELETE'])
def delete_entry(postID):
    if not session.get('logged_in'):
        abort(401)
    g.db.execute('delete from entries WHERE id = ?', [postID])
    flash('Entry was deleted')
    return redirect(url_for('show_entries'))

How do I then get the correct postID from the html to the py?

3

2 Answers 2

4

If you are going to use a POST request the variable will be available under flask's request.form. If you stay with DELETE I think you need to change your uri. For example:

@app.route('/delete/<int:postID>', methods=['DELETE'])
Sign up to request clarification or add additional context in comments.

Comments

2

To get the postID use this {{ loop.revindex }}

This is my code,it works!!

In the .py:

@app.route('/delete', methods=['POST'])
def delete_entry():
    if not session.get('logged_in'):
        abort(401)
    db = get_db()
    db.execute('delete from entries where id = ?'[request.form['entry_id']])
    db.commit()
    flash('Entry deleted')
    return redirect(url_for('show_entries'))

In the HTML:

<form action="{{ url_for('delete_entry') }}" method=post class=delete-entry>
          <input type="hidden" name="entry_id" value="{{ loop.revindex }}">
          <input type="submit" value="Delete" />
</form>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.