Skip to main content
Migrating from Flask to FastAPI involves several key changes to your codebase. This guide will walk you through using Codegen to automate this migration, handling imports, route decorators, static files, and template rendering. You can find the complete example code in our examples repository

Overview

The migration process involves four main steps:
  1. Updating imports and initialization
  2. Converting route decorators
  3. Setting up static file handling
  4. Updating template handling
Let’s walk through each step using Codegen.

I: Update Imports and Initialization

First, we need to update Flask imports to their FastAPI equivalents and modify the app initialization:
Learn more about imports here.
This transforms code from:
to:
FastAPI doesn’t require the __name__ argument that Flask uses for template resolution. Codegen automatically removes it during migration.

II: Convert Route Decorators

Next, we update Flask’s route decorators to FastAPI’s operation decorators:
This converts decorators from Flask style:
to FastAPI style:
FastAPI provides specific decorators for each HTTP method, making the API more explicit and enabling better type checking and OpenAPI documentation.

III: Setup Static Files

FastAPI handles static files differently than Flask. We need to add the StaticFiles mounting:
This sets up static file serving equivalent to Flask’s automatic static file handling.
FastAPI requires explicit mounting of static directories, which provides more flexibility in how you serve static files.

IV: Update Template Handling

Finally, we update the template rendering to use FastAPI’s Jinja2Templates:
This transforms template rendering from Flask style:
to FastAPI style:
FastAPI requires the request object to be passed to templates. Codegen automatically adds this parameter during migration.

Running the Migration

You can run the complete migration using our example script:
The script will:
  1. Process all Python files in your codebase
  2. Apply the transformations in the correct order
  3. Maintain your code’s functionality while updating to FastAPI patterns

Next Steps

After migration, you might want to:
  • Add type hints to your route parameters
  • Set up dependency injection
  • Add request/response models
  • Configure CORS and middleware
Check out these related tutorials:

Learn More