Django REST framework vs Flask vs Sinatra

Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Django REST framework
Django REST framework

859
625
+ 1
262
Flask
Flask

4.8K
3.8K
+ 1
1.1K
Sinatra
Sinatra

428
323
+ 1
209

What is Django REST framework?

It is a powerful and flexible toolkit that makes it easy to build Web APIs.

What is Flask?

Flask is intended for getting started very quickly and was developed with best intentions in mind.

What is Sinatra?

Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort.
Get Advice Icon

Need advice about which tool to choose?Ask the StackShare community!

Why do developers choose Django REST framework?
Why do developers choose Flask?
Why do developers choose Sinatra?

Sign up to add, upvote and see more prosMake informed product decisions

    Be the first to leave a con
    Jobs that mention Django REST framework, Flask, and Sinatra as a desired skillset
    What companies use Django REST framework?
    What companies use Flask?
    What companies use Sinatra?

    Sign up to get full access to all the companiesMake informed product decisions

    What tools integrate with Django REST framework?
    What tools integrate with Flask?
    What tools integrate with Sinatra?

    Sign up to get full access to all the tool integrationsMake informed product decisions

    What are some alternatives to Django REST framework, Flask, and Sinatra?
    Django
    Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.
    Tastypie
    Tastypie is a webservice API framework for Django. It provides a convenient, yet powerful and highly customizable abstraction for creating REST-style interfaces.
    Swagger UI
    Swagger UI is a dependency-free collection of HTML, Javascript, and CSS assets that dynamically generate beautiful documentation and sandbox from a Swagger-compliant API
    Graphene
    Graphene is a Python library for building GraphQL schemas/types fast and easily.
    Spring Boot
    Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.
    See all alternatives
    Decisions about Django REST framework, Flask, and Sinatra
    Tim Abbott
    Tim Abbott
    Founder at Zulip · | 9 upvotes · 73.1K views
    atZulipZulip
    Django
    Django
    Django REST framework
    Django REST framework

    Zulip has been powered by Django since the very early days of its development with Django 1.4, back in 2012. As a reasonably mature web application with significant scale, we're at the stage in many companies' development where one starts to rip out more and more of the web framework to optimize things or just make them work the way we want. (E.g. while I was at Dropbox in early 2016, we discovered we only had about 600 lines of code left from the original Pylons framework that actually ran).

    One of the things that has been really fantastic about Django is that we're still happily using it for the vast majority of code in the project, and every time Django comes out with a new release, I read the changelog and get excited about several improvements that actually make my life better. While Django has made some design decisions that I don't agree with (e.g. I'm not a fan of Django REST framework, and think it makes life more difficult), Django also makes it easy to do your own thing, which we've done to great effect (see the linked article for details on our has_request_variables framework).

    Overall I think we've gotten a ton of value out of Python and Django and would recommend it to anyone starting a new full-featured web application project today.

    See more
    Pierre Chapuis
    Pierre Chapuis
    at Pierre Chapuis · | 5 upvotes · 69.2K views
    atChilliChilli
    Flask
    Flask
    Hug
    Hug
    SQLAlchemy
    SQLAlchemy
    Python
    Python
    Gunicorn
    Gunicorn

    Unlike our frontend, we chose Flask, a microframework, for our backend. We use it with Python 3 and Gunicorn.

    One of the reasons was that I have significant experience with this framework. However, it also was a rather straightforward choice given that our backend almost only serves REST APIs, and that most of the work is talking to the database with SQLAlchemy .

    We could have gone with something like Hug but it is kind of early. We might revisit that decision for new services later on.

    See more
    Praveen Mooli
    Praveen Mooli
    Engineering Manager at Taylor and Francis · | 12 upvotes · 352.5K views
    MongoDB Atlas
    MongoDB Atlas
    Java
    Java
    Spring Boot
    Spring Boot
    Node.js
    Node.js
    ExpressJS
    ExpressJS
    Python
    Python
    Flask
    Flask
    Amazon Kinesis
    Amazon Kinesis
    Amazon Kinesis Firehose
    Amazon Kinesis Firehose
    Amazon SNS
    Amazon SNS
    Amazon SQS
    Amazon SQS
    AWS Lambda
    AWS Lambda
    Angular 2
    Angular 2
    RxJS
    RxJS
    GitHub
    GitHub
    Travis CI
    Travis CI
    Terraform
    Terraform
    Docker
    Docker
    Serverless
    Serverless
    Amazon RDS
    Amazon RDS
    Amazon DynamoDB
    Amazon DynamoDB
    Amazon S3
    Amazon S3
    #Backend
    #Microservices
    #Eventsourcingframework
    #Webapps
    #Devops
    #Data

    We are in the process of building a modern content platform to deliver our content through various channels. We decided to go with Microservices architecture as we wanted scale. Microservice architecture style is an approach to developing an application as a suite of small independently deployable services built around specific business capabilities. You can gain modularity, extensive parallelism and cost-effective scaling by deploying services across many distributed servers. Microservices modularity facilitates independent updates/deployments, and helps to avoid single point of failure, which can help prevent large-scale outages. We also decided to use Event Driven Architecture pattern which is a popular distributed asynchronous architecture pattern used to produce highly scalable applications. The event-driven architecture is made up of highly decoupled, single-purpose event processing components that asynchronously receive and process events.

    To build our #Backend capabilities we decided to use the following: 1. #Microservices - Java with Spring Boot , Node.js with ExpressJS and Python with Flask 2. #Eventsourcingframework - Amazon Kinesis , Amazon Kinesis Firehose , Amazon SNS , Amazon SQS, AWS Lambda 3. #Data - Amazon RDS , Amazon DynamoDB , Amazon S3 , MongoDB Atlas

    To build #Webapps we decided to use Angular 2 with RxJS

    #Devops - GitHub , Travis CI , Terraform , Docker , Serverless

    See more
    Interest over time