Причина:
Когда маршрут посещается через браузер, он выполняет запрос GET
.
Таким образом, посещение /api/td
, которое объявлено только с помощью метода DELETE
, приведет к ошибке Method not allowed
.
Решение:
Чтобы преодолеть это, нам нужно объявить маршрут с помощью метода GET
вместо DELETE
:
@app.route("/api/td", methods=['GET'])
Я создал фиктивное приложение для удаления строки из таблицы базы данных MySQL.
app.py
:
from flask import Flask
from database import Database
app = Flask(__name__)
database = Database()
@app.route("/api/td", methods=['GET'])
def delete_row():
return database.delete()
app.run(debug=True, port=8080)
database.py
from sqlalchemy import create_engine
class Database(object):
def __init__(self):
# dialect+driver://username:password@host:port/database
self.engine = create_engine('mysql://root:123@localhost/practice_db')
def delete(self):
try:
with self.engine.connect() as con:
con.execute('DELETE FROM `user_table` WHERE `id`=2')
return 'Deleted successfully'
except Exception as e:
return "Exception occurs: {}".format(str(e))
requirements.txt
Click==7.0
Flask==1.0.2
itsdangerous==1.1.0
Jinja2==2.10
MarkupSafe==1.1.0
mysqlclient==1.3.13
SQLAlchemy==1.2.14
Werkzeug==0.14.1
Скриншот: