Как настроить интеграцию приложения flask в приложение fastapi?
Пишу приложение на fastapi, к нему делаю админ панель на flask, встраивая ее в приложение.
примерный код приложения:
from fastapi import FastAPI
from starlette.middleware.wsgi import WSGIMiddleware
from admin_pannel import app as flask_app
app=FastAPI()
app.mount('/administration/', WSGIMiddleware(flask_app))
@app.get('/')
async def read_root():
return {'message': 'Hello World'}
примерный модуль admin_pannel.py:
#импорт библиотек
#функция для удаления строки в бд
def delete_user(connection, id):
with connection.cursor() as cursor:
cursor.execute(
'DELETE FROM users WHERE id = %s',
(id,)
)
connection.commit()
#хэндлер фласка для использования по эндпоинту administration/admin/users/delete/id записи
@app.route('administration/admin/users/delete/<int:id>', methods=['POST'])
def delete(id):
delete_user(get_connection(), id)
return redirect('administration/admin/users/')
class DashBoard(AdminIndexView):
@expose('/')
def add_data_db(self):
users=get_users_all(get_connection())
users=[dict(x) for x in users]
return self.render('admin/dashboard_index.html', users=users)
class Users(BaseView):
@expose('/')
def any_page(self):
users=get_users_all(get_connection())
return self.render('users.html', users=users)
admin = Admin(app, name='Мой блог', template_mode='bootstrap3', endpoint='admin', index_view=DashBoard())
admin.add_view(Users(name='Пользователи'))
if __name__ == '__main__':
app.run(debug=True)
почему при переходе по адресу к примеру administration/admin/users/delete/12 я получаю ошибку Method Not Allowed The method is not allowed for the requested URL. вместо нормальной работы хэндлера фласка delete(id)?
запускаю код через команду uvicorn main:app. При запуске модуля фласка отдельно от фастапи все работает корректно
Можно ли как -то сделать, чтобы fastapi игнорировал все запросы в строке после эндпоинта administration и передавал их приложению flask?