Как настроить интеграцию приложения 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?


Ответы (0 шт):