I've been using Django for over 10 years, before version 1 was even released. I think one of the biggest advantages to Django is the ORM. The downside to Django is for an API most people use the Django Rest Framework, which doesn't seem as nice as FastAPI in my opinion. Another key advantage to Django is the structure and organization it provides with its concept of Apps. This is especially helpful and important for large applications. I think it would be really hard for me to switch from Django's ORM to SQLAlchemy.
Same, working since 1.4. DRF is not that bad, but it's much harder to learn than FastAPI. Looks uglier too and the configuration just isn't worth it, especially for smaller projects. I'm still working with DRF at my job, but personal projects are all FastAPI now. Will probably change most of the job project to FastAPI anyways.
Great video. Awesome how you managed to compare the three frameworks in such a short video while still being clear and concise about the pros and cons.
Hey how does flask feel compared to laravel? I've been using and loving Laravel for years now but i want to try something else cuz php still feels kinda ancient, how would you compare the two? Is Laravel more similiar to Django instead? (I would only need it for backend, usually my frontend is angular/react)
@@spooddyy i agree with you for that but learning multiple framework kinda is my job ahahaha, anyways in our company we main laravel for backend and our cto is now giving us the chance to switch to one that could potentially suit our needs better, the learning curve won't be a problem since it will most likely be a gradual change (most of our stuff still run laravel backend), i was just wondering if it was worth to switch (if the writing time efficiency / potential less package support ratio was)
as someone who had experienced pain and headache due to non typed code, I am definitely going for FastAPI Not to mention the auto OpenAPI Docs which make it easy to integrate security automation tools like OWASP ZAP. For an api project this is great. Things like the admin panel and the front end can be built separately using Vue or something like that. I just need an API, so FastAPI it is. Thanks for the video. this is really helpful.
Really great speedrun of the different web frameworks -I'm glad that you didn't give a definitive answer for which is best, only giving the pros and tradeoffs of each so a good dev can pick which one fits with their use case
@@Voidstroyer The pros for each library showed their strengths and where they should be used. Django enforces a specific file structure and layout and comes with the python-esque "batteries included". I would hazard a guess its used in larger projects because of that structure so there is less conflict between the teams (e.g. frontend guys are primarily in the templates, backend would be between models and views). Flask is extremely light-weight and you can build something functional in an extremely small codebase (I believe he said 47 lines of code excluding the HTML template). One of Flask's major pros is you can choose what library you want for every part of the process, don't like the templating engine? Cool, pick a different one. Want to write your SQL by hand and bypass the ORM entirely, np. In that way it completely gets out of you way and allows you to choose the right tools for your use case. FastAPI seems to follow Flask's general structure but adds batteries for an extremely common use case which is RESTful APIs (while not throwing in the kitchen sink like Django) and makes use of the type-hinting in python 3 avoiding issues the other two had to contend with prior to that feature being added to python. Its relative youth would be a double-edged sword, for greenfield uses you don't have any technical debt in the form of backwards compatibility with existing code, however on the other hand how well has it been battle tested? On pypi its still listed as Beta, should I expect breaking changes in the future? If you are confident you can keep up with its development it probably would be the most performant of the three especially with all the performance enhancements coming in python 3.11 and later.
I love flask for rapid development. Our projects never get very big because we run a microservice model. I can build out new logic for a new api feature, run the pipeline and publish the swagger file, all before lunchtime. Even moderately sized apps can be managed with blueprints fairly easily, and Flask 2+ supports nested blueprints. SQLAlchemy and Pandas do enough for me, I don't feel the need to abstract away the DB like an ORM coerces. Rails does a lot better than Django in that aspect IMO. Also, you should be escaping query arguments and variables used in the URI ;)
I prefer using Flask, because it gives a lot of flexibility. You can easily use it to build a similar structure to the Django app and separate stuff (yes with a bit more manual work, but possible), but it is not something obliging to make an application work. And especially for smaller projects, it gives a lot of freedom. In addition to that, latest versions of flask support async/await functions. FastAPI seems like it is build for APIs and not fully fledged websites, so probably it is best to keep it that way.
For any "basic" app the documentation is enough, the only times I have had to dive into the fastapi code was for more customized OAuth and even then the source code isn't that cryptic, I've been using it for over a year and it's my go to for rest APIs that don't require massive scalability. The biggest difference with flask and django is that if forces you to make a distinction between frontend and backend, ideally only making a rest api that a static frontend consumes, but I see this as a better way to build web apps as it forces you to learn about frontend frameworks that are way better than anything a python framework can provide.
Super helpful video thanks!! This is exactly what I needed: a QUICK overview of these Python options, how you get up and running, how they differ. I have a spaghetti monster Django app at work and I need to make an on-the-side api service, wondering if I should just start completely fresh or try and integrate with the existing beast. Separation of concerns, ease of implementation, and developer role structure says Flask it is. 👌👌
Once you work long enough using Django you end up knowing what is going on inside. What you find in django is a very well developped structure. I personally dont care if fastapi is faster, because I can just scale horizontally my django service. microservice. In the long run the bottleneck is 99% of the time the database. Whe programming you want a mvp asap you don't get to waste time trying to integrate stuff, you just want something that works well fast, that's why I'll stick with Django. That being said I it is not very good when it comes to handling websockets, I'll usually go with node
@manny I'm definitely not an expert, but I would say FastAPI given that you'll probably want to build backend microservices for your app, and then just create frontend clients (for web, android, ios, etc) that communicate with your FastAPI backend.
Best thing about Django is that it's a fullstack framework. In a structure that needs frontend development, building backend API is easier and faster with Flask and FastAPI, but I need typing so... Going for FastAPI !
Very nice comparison! Even though I'm Django dev myself, I can imagine how complicated it must seem compared to Flask for instance. Maybe you should have shown an example with class based views to see even more power of Django.
Thanks to this video I switched from Django to FastAPI and I don't regret it one bit. Django does a lot of things that are hidden to the developer and has a very complicated structure which is overkill for simple apps. With FastAPI it actually feels like you're coding. I wish I had checked it out sooner rather than wasting my time/energy on Django.
I did the same, fastapi also gives you more freedom since django only lets you use its dependancies while fastapi lets you install and work with whatever, not to mention faster and more lightweight only the tools you need
I've used flask for a long time but switched to Django for a new project at work - man, it's really a good all-around package for full stack production web apps. Love the way things are organized into apps, and all the libraries which make your life easier. Like Celery for background tasks.
I use django in backend and react js in frontend.. For me its really awesome the organization and structure you get with django. I also used django-rest-framework, and for API apps drf is the best choice in my opinion.
@@jonathanidioseph5101 not the original commenter but we do the same where I work. Front end services just either make HTTP calls to the backend and/or can listen to or send RabbitMQ (sometimes pub/sub) messages. They're all microservices so each component is it's own discreet unit that just pass data between themselves
Great content. Thanks Patrick. This was my first experience of Flask and FastAPI. So far Flask and Django are my favorite. I'm experience all of them more
What you should notice about FastAPI is that it has dependency injection built in. Try configure tests for complicated microservices without DI. Oh boy patching all the consumer/producer/external api/sdk calls will be a huge mess. Just impossible to integration test without messy mocks instead of clean DI.
Why do you need DI in Python? As far as my understanding, DI is just bundling different modules/components together at RUNTIME. In static languages like Java and C# you'd need DI. In Python, you can assign any variable to any object at runtime. I would like to know why you'd need it in Python? Python has DI built-in isn't it?
@@ND-gn8tc ONLY when you're using static languages like Java. Python is dynamic language that can change data types in RUNTIME. No need for DI in python.
1000 thanks to you, Iam a Cloud Arichtect wanted to choose one py framework to learn and was confused, you cleared everything, I decided to go with flask, thanks man
Very helpful video saved me a ton of time thank you . I’ve used fast api for purely api and backend in the past I love it , I have never had to develop anything with a frontend or view or using any jinja templates so this was very useful . My favourite is fast api , I built a websockets framework with tornado in the past , I love tornado it’s solid when it comes to websockets and async aswell so but at the time fast api didn’t exist , django was too cumbersome for my needs at the time and flask was too light weight . I had redeveloped a small api with fast api and it’s definitely my first port of call for a web framework in python the autodoc feature the auto reload the pydantic built in so easy validation makes it a pleasurable experience once you get over the learning curve which is not so bad cos the documentation is really good and the speed for a python framework is really fast in production . Overall a pleasurable development experience
I use fastapi for my api' and starlette for web apps. Fastapi is built over starlette, so there is little paradigm shifting. I don't personally like Django as it sets too many rules. I would just build a vuejs front end instead of Django, then an api layer with fastapi.
@@BehruzbekOtayev i think he meant that he is not using the front end template engine provided by django out of the box. Using django just to build the api. Which is actually norm in production for quite sometime already.
For REST in Django use Django REST Framework and all CRUD operation can be defined in a single simple ViewSet class. Plus every CRUD can be paginated, filtered with a simple one more code line.
Thank you! That's a comparison which I was looking for! Summarising : Flask - easy & nice to develope, low entrance level. FastAPI - great performance, with a little more code we are able to handle 2-3x more requests. Django - the hardest to learn, not that obiviouse, but comes with great features if you dive into. Last one prefered by compannies which use python. So for home & hobby project (flask or fastapi), or for people concetrated on python job dev position - Django is right way. BTW Parick -which one of these is your favourite one?
I struggle with the idea of microservice versus framework. In our company, we aim to build microservices. A microservice is either a visualization layer or maybe business logic or maybe an entity store service. The first example (Flask) had all of those combined.
10:14 Can the FastAPI's documentation page be used as a GUI for the API where the user POSTs values and gets responses back? Can it be hosted on a server for public access?
Iv been trying to puzzle out what he says @ 6:26 for more than 10 minutes but finally figured it out: type hints, not type in, nor tie pins (as the auto generated captions believes he means)
This was a fun little exercise in the different frameworks. I think I must be using a different version of python or something because using flask exactly like you wrote it seems to give me an error regarding using it outside of the app context. Which can be fixed with a few lines of code appropriately placed, if you understand where and why. For the rest of them this is what I wanted to see coming here (although the post/get/put/delete not being fully hashed out did kind of bother me).
As a mostly-flask-user I've been using bottle for the last few months. Man, this framework really blew my mind. While the basics are nothing special, advanced in-depth knowledge really makes it one of the most powerful (as in flexiblility and performance) frameworks in my opinion.
Flask is so cool for small and medium size projects and can increase your speed in so many ways, i dont have any experience with fastapi but it looks the same.
Thanks for the detailed code comparison Patrick, especially with the in-depth code comparison. That was a lot of work. Much appreciated. Thanks. I also looked at your channel. Lots of useful tutorials. Thanks. Subscribed.
Love this video! I use the FastAPI framework and it's absolutely amazing. I'm working on learning Django now but it was useful to learn the differences between the frameworks.
Great overview . My more opinionated take: Fastapi for simple APIs and micro services, django for anything more complicated. As soon as you have a db, you’ll want an admin app. Any large app in flask ends in the desire to have used django. And btw, with a class based view the django code could have been even simpler. And things like caching and django_q for queues bring the speed in complex apps.
Agree fully, the batteries Django includes are hard-won battle scars from those that went before you. There is usually very little benefit in re-inventing the wheel, focus on whats unique to your app. For smaller projects you should be designing to avoid those issues in the first place.
I have completed 3 projects in Django now interested in API, but confused a little bit what now I choose DRF or FastAPI. I read on web that FastAPI is easy and fast but Django REST API is secured. Which I now choose become a conflict for me, now need guide from seniors Django developers with their experience in this regard.
I've only used Django for only 4 months, and I love the framework. Just out of curiosity have you tried creating a frontend project like Angular or React or maybe mobile like a flutter or React native with one of these backend technologies? Is Django easier when used for making a GET request for a frontend technology? Or would you recommend one of the other backend technologies like FastAPI or Flask instead? Not sure yet but I am thinking about focusing on Django with React or maybe Angular for Full Stack, any thoughts? thanks Patrick...
Many thanks that’s a lot of work well done. I started couple of years ago with Django and found my self stuck with it 😅 Maybe I need to explore more specially the fact API looks interesting
Super impressive video! Covered a lot of info concisely - must have taken a lot of time! FastAPI seems to pique my interest for a micro-service based app. Also seems to get a lot done without a huge learning curve. I’ve worked with Django and it’s awesome! if you know your way around.
Hey Patrick, Your video is awesome! thanks for sharing. On index 7:50, I have to exclude "autocommit=False" b/c it is not working, and it says "internal server error" or something like that. After I that, it is working like breeze!
Why are we creating a venv file? Aren't we already running the files inside a python interpreter within an environment? Also, my python environment which I created is in a different location, and the location for the folder scripts are in a different folder. How to run the export variables in this case if my flask library is installed in main interpreter location of the environment and not on script location? Current I am facing this error: export: The term 'export' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Thanks for the detailed walktthrough. I was hoping to get an overall judgement or review of each. What is your answer to the "which is best?" question?
For sure, this video was a lot of work, thanks for it! Now I'm once again on the verge of deciding between an older well-tested Framework (Django) and a cool newcomer (FastAPI)... nerd problems...
Awesome useful video , in the end I think that the Django is the best option , and it was cleaner and very powerful one. but those other two were good.
I have experienced Flask and Django both. Nice comparison. I liked Flask, as you mentioned, it is quick for beginner and also we can run custom scripts easily with flask to display output on web.(I know we can do the same with FastAPI and Django as well 😄)
It is Flask for me, i love the simple and intuitive way of handling things with Flask, its the most Pythonic of the 3 and also the most functional, and i love working in a functional way.
@@facundogoiriz7323 Can you give any examples? I moved from a functional language to Python and the whole language is by no means functional. Still, Pythonic way of writing most things fullfills my need for "clearness" and conciseness. I am using Flask too and I think it's very neat.
Thank you for this video, it helped me get an idea of what to start (i didnt understand anything 😅😅) but it gave me an idea as what to expect from each one. A hard decision to make of which one to begin with. any suggestions or roadmap are welcome, Thanks.
I’m not sure if anyone else has mentioned this (sorry if it’s a duplicate), but in your vs code terminal you should be using a power line patched font. That’s why you have black squares before your prompt.
Very good video. Im new in coding and python is my first language. So to deploy smaller functions what should i use. Im not good in html and css...does any of the framework do simple styling or do i need to become better in html and css for that.
I’m new to learning python. I’m watching this with limited knowledge over 95% of what’s being presented. This seems like a lot to remember. How much of this is expected knowledge vs googled?
I absolutely enjoyed this video. Not only did I learn about the 3 frameworks, but was in awe of the how you edited this video. Perfection!
I've been using Django for over 10 years, before version 1 was even released. I think one of the biggest advantages to Django is the ORM. The downside to Django is for an API most people use the Django Rest Framework, which doesn't seem as nice as FastAPI in my opinion. Another key advantage to Django is the structure and organization it provides with its concept of Apps. This is especially helpful and important for large applications. I think it would be really hard for me to switch from Django's ORM to SQLAlchemy.
Same here. I used Django since version 1.3. Did jab a bit with flash but always find myself back at django after a while.
Same, working since 1.4. DRF is not that bad, but it's much harder to learn than FastAPI. Looks uglier too and the configuration just isn't worth it, especially for smaller projects. I'm still working with DRF at my job, but personal projects are all FastAPI now. Will probably change most of the job project to FastAPI anyways.
@@komkaitkanchai8766 wow i'm amaze to see django vets here, i just learnt making basic django apps.
with Django Ninja introduced, I don't think API should be a problem anymore in Django
Why use ORM even 😂😂 just use normal SQL
Great video. Awesome how you managed to compare the three frameworks in such a short video while still being clear and concise about the pros and cons.
Started Flask last year, it is currently rising up into my favourite framework, I’m enjoying my transition from PHP to Python
same too, I transitioned from php to python 3 years ago. python is so much cool.
@@spooddyy developp in something you like, so you'll dive deeper without even noticing and you'll become way better and your time way more valuable.
Hey how does flask feel compared to laravel? I've been using and loving Laravel for years now but i want to try something else cuz php still feels kinda ancient, how would you compare the two? Is Laravel more similiar to Django instead? (I would only need it for backend, usually my frontend is angular/react)
@@TortelliniSRL you should stick with it, laravel is good, you just need a backend framework doesn’t mean you have to learn all of those are exists.
@@spooddyy i agree with you for that but learning multiple framework kinda is my job ahahaha, anyways in our company we main laravel for backend and our cto is now giving us the chance to switch to one that could potentially suit our needs better, the learning curve won't be a problem since it will most likely be a gradual change (most of our stuff still run laravel backend), i was just wondering if it was worth to switch (if the writing time efficiency / potential less package support ratio was)
as someone who had experienced pain and headache due to non typed code, I am definitely going for FastAPI
Not to mention the auto OpenAPI Docs which make it easy to integrate security automation tools like OWASP ZAP. For an api project this is great.
Things like the admin panel and the front end can be built separately using Vue or something like that.
I just need an API, so FastAPI it is.
Thanks for the video. this is really helpful.
Really great speedrun of the different web frameworks -I'm glad that you didn't give a definitive answer for which is best, only giving the pros and tradeoffs of each so a good dev can pick which one fits with their use case
I mean, not giving a definitive answer is good and all, but an opinion at the very least would be appreciated
@@Voidstroyer The pros for each library showed their strengths and where they should be used.
Django enforces a specific file structure and layout and comes with the python-esque "batteries included". I would hazard a guess its used in larger projects because of that structure so there is less conflict between the teams (e.g. frontend guys are primarily in the templates, backend would be between models and views).
Flask is extremely light-weight and you can build something functional in an extremely small codebase (I believe he said 47 lines of code excluding the HTML template). One of Flask's major pros is you can choose what library you want for every part of the process, don't like the templating engine? Cool, pick a different one. Want to write your SQL by hand and bypass the ORM entirely, np. In that way it completely gets out of you way and allows you to choose the right tools for your use case.
FastAPI seems to follow Flask's general structure but adds batteries for an extremely common use case which is RESTful APIs (while not throwing in the kitchen sink like Django) and makes use of the type-hinting in python 3 avoiding issues the other two had to contend with prior to that feature being added to python. Its relative youth would be a double-edged sword, for greenfield uses you don't have any technical debt in the form of backwards compatibility with existing code, however on the other hand how well has it been battle tested? On pypi its still listed as Beta, should I expect breaking changes in the future? If you are confident you can keep up with its development it probably would be the most performant of the three especially with all the performance enhancements coming in python 3.11 and later.
@@davidmcken Thank you very much for the detailed explanations of the pros/cons for each choice.
I love flask for rapid development. Our projects never get very big because we run a microservice model. I can build out new logic for a new api feature, run the pipeline and publish the swagger file, all before lunchtime. Even moderately sized apps can be managed with blueprints fairly easily, and Flask 2+ supports nested blueprints.
SQLAlchemy and Pandas do enough for me, I don't feel the need to abstract away the DB like an ORM coerces. Rails does a lot better than Django in that aspect IMO.
Also, you should be escaping query arguments and variables used in the URI ;)
I prefer using Flask, because it gives a lot of flexibility. You can easily use it to build a similar structure to the Django app and separate stuff (yes with a bit more manual work, but possible), but it is not something obliging to make an application work. And especially for smaller projects, it gives a lot of freedom. In addition to that, latest versions of flask support async/await functions.
FastAPI seems like it is build for APIs and not fully fledged websites, so probably it is best to keep it that way.
I can programme big and fast Web projects by Flask only ?
@@youssefchaabi5402 why not?
@@Deadlious Flask good in scaling ??
@@Deadlious OK bro thank you
@@youssefchaabi5402 what did you go with? Flask?
i like Flask's context management with the app factory pattern, very easy to get hold of application-wide config and db instances
true
Big fan of Flask, but I might have to experiment with FastAPI!
me too
fastapi has awful docs
@@meizufluxx but faster and better development if you learn it right?
@@NishantCosmos no fastapi is awful because the docs are awful. they desperately need an api reference
For any "basic" app the documentation is enough, the only times I have had to dive into the fastapi code was for more customized OAuth and even then the source code isn't that cryptic, I've been using it for over a year and it's my go to for rest APIs that don't require massive scalability.
The biggest difference with flask and django is that if forces you to make a distinction between frontend and backend, ideally only making a rest api that a static frontend consumes, but I see this as a better way to build web apps as it forces you to learn about frontend frameworks that are way better than anything a python framework can provide.
Love this!! That FastAPI docs generation is super neat!
Super helpful video thanks!! This is exactly what I needed: a QUICK overview of these Python options, how you get up and running, how they differ. I have a spaghetti monster Django app at work and I need to make an on-the-side api service, wondering if I should just start completely fresh or try and integrate with the existing beast. Separation of concerns, ease of implementation, and developer role structure says Flask it is. 👌👌
I regret starting with Django instead of Flask. If I knew Flask earlier then I would have better grasp of what is going on in django :)
true, if i would start again i would learn flask then learn django, as flask helps you understands how django does things under the hood.
Yup flask is a gem
Flask is complicated because of code written in one file,,, there is no MVT structure which is easy to wrte codes in different files
Django is super easy that the most complecated fastapi and flask
Once you work long enough using Django you end up knowing what is going on inside. What you find in django is a very well developped structure. I personally dont care if fastapi is faster, because I can just scale horizontally my django service. microservice. In the long run the bottleneck is 99% of the time the database.
Whe programming you want a mvp asap you don't get to waste time trying to integrate stuff, you just want something that works well fast, that's why I'll stick with Django. That being said I it is not very good when it comes to handling websockets, I'll usually go with node
For microservices flask and fastAPI
For full stack django
It depends on use cases what kind of application you want to develop
@manny I'm definitely not an expert, but I would say FastAPI given that you'll probably want to build backend microservices for your app, and then just create frontend clients (for web, android, ios, etc) that communicate with your FastAPI backend.
Man, it was awesome. I have started Flask for a while & this was a nice big picture for the backend roadmap.
I’ve recently gotten into python development and this was a video I didn’t know I needed! Thanks for your hard work!
Best thing about Django is that it's a fullstack framework. In a structure that needs frontend development, building backend API is easier and faster with Flask and FastAPI, but I need typing so... Going for FastAPI !
Ca va, mon ami.
I can tell you more. In large projects nobody writes code without typing :D
So you made a good choice :D
Django-ninja is a good choice
@@huacai168 it really doesn't matter what you use, end of the day its all about python and how you're implementing your python mechanism into web.
@@spooddyy tech debt is a real issue lmao
Very nice comparison! Even though I'm Django dev myself, I can imagine how complicated it must seem compared to Flask for instance. Maybe you should have shown an example with class based views to see even more power of Django.
Thanks to this video I switched from Django to FastAPI and I don't regret it one bit. Django does a lot of things that are hidden to the developer and has a very complicated structure which is overkill for simple apps. With FastAPI it actually feels like you're coding. I wish I had checked it out sooner rather than wasting my time/energy on Django.
I did the same, fastapi also gives you more freedom since django only lets you use its dependancies while fastapi lets you install and work with whatever, not to mention faster and more lightweight only the tools you need
I agree.
Great editing on this! It was the perfect speed for me instead of watching a 2hr code along
I've used flask for a long time but switched to Django for a new project at work - man, it's really a good all-around package for full stack production web apps. Love the way things are organized into apps, and all the libraries which make your life easier. Like Celery for background tasks.
Celery is an standalone tool. You can use it with Flask, FastAPI and any other framework.
Brother can you suggest best project in flask , for Intern resume.
@@josedominguez8782 True, but I was thinking about celerys direct integration to django - "django-celery".
@@dipenketanbhaidave154 Issue tracking system
This is just the video I needed 👌 I can't belive you managed to do this is under 20min 😅 well done 🙏
thank you!
I use django in backend and react js in frontend.. For me its really awesome the organization and structure you get with django. I also used django-rest-framework, and for API apps drf is the best choice in my opinion.
How do u merge the two together?
@@jonathanidioseph5101 not the original commenter but we do the same where I work. Front end services just either make HTTP calls to the backend and/or can listen to or send RabbitMQ (sometimes pub/sub) messages. They're all microservices so each component is it's own discreet unit that just pass data between themselves
@@jonathanidioseph5101 you merge front and backend through rest api, where the frontend makes requests to the backend
@@asii_kresourses to learn microservices with django-react ?
Flask-restx features Automatic Swagger creation as well :)
Coming from FLASK to Django it is so much easier in Django when it comes to scalability for further upgrade than Flask
Awesome! but not for beginners. This is how programming should be taught, I believe. Straight to the point and not long video.
Great content. Thanks Patrick. This was my first experience of Flask and FastAPI. So far Flask and Django are my favorite. I'm experience all of them more
Thank you for this. I have mostly been using python for data science but I'm looking to start building out web apps.
What you should notice about FastAPI is that it has dependency injection built in. Try configure tests for complicated microservices without DI. Oh boy patching all the consumer/producer/external api/sdk calls will be a huge mess. Just impossible to integration test without messy mocks instead of clean DI.
@Francisco Mendoza Torres yes
@Francisco Mendoza Torres yes it is a killer feature
Why do you need DI in Python? As far as my understanding, DI is just bundling different modules/components together at RUNTIME. In static languages like Java and C# you'd need DI. In Python, you can assign any variable to any object at runtime. I would like to know why you'd need it in Python? Python has DI built-in isn't it?
@@subipan4593 makes it easy to setup tests and test, thus, you can achieve extremely high coverage
@@ND-gn8tc ONLY when you're using static languages like Java. Python is dynamic language that can change data types in RUNTIME. No need for DI in python.
Great man. I don't work with Python, but the simplicity is just great.
I really enjoy the constancy of your voice and the equidistance when presenting the 3 frameworks
Thank you so much for the great video! The direct comparison shows a lot of the specific possibilities. 👍👍👍
1000 thanks to you, Iam a Cloud Arichtect wanted to choose one py framework to learn and was confused, you cleared everything, I decided to go with flask, thanks man
Very helpful video saved me a ton of time thank you . I’ve used fast api for purely api and backend in the past I love it , I have never had to develop anything with a frontend or view or using any jinja templates so this was very useful .
My favourite is fast api , I built a websockets framework with tornado in the past , I love tornado it’s solid when it comes to websockets and async aswell so but at the time fast api didn’t exist , django was too cumbersome for my needs at the time and flask was too light weight . I had redeveloped a small api with fast api and it’s definitely my first port of call for a web framework in python the autodoc feature the auto reload the pydantic built in so easy validation makes it a pleasurable experience once you get over the learning curve which is not so bad cos the documentation is really good and the speed for a python framework is really fast in production . Overall a pleasurable development experience
Using Django since 0.96 or so and I just love it because of all the batteries included.
I use fastapi for my api' and starlette for web apps. Fastapi is built over starlette, so there is little paradigm shifting. I don't personally like Django as it sets too many rules. I would just build a vuejs front end instead of Django, then an api layer with fastapi.
"vuejs front end instead of Django"? Really? How are Django and VueJS comparable?
@@BehruzbekOtayev i think he meant that he is not using the front end template engine provided by django out of the box. Using django just to build the api. Which is actually norm in production for quite sometime already.
I would love a fastapi + vuejs tutorial!
@@yasayah7289 take it separately, "vuejs tuto rest API" and "fastAPI tuto". The only glue is to serve your static files generated by vuejs.
Vuejs and flask is match from heaven as well
For REST in Django use Django REST Framework and all CRUD operation can be defined in a single simple ViewSet class. Plus every CRUD can be paginated, filtered with a simple one more code line.
Thank you! That's a comparison which I was looking for! Summarising : Flask - easy & nice to develope, low entrance level. FastAPI - great performance, with a little more code we are able to handle 2-3x more requests. Django - the hardest to learn, not that obiviouse, but comes with great features if you dive into. Last one prefered by compannies which use python. So for home & hobby project (flask or fastapi), or for people concetrated on python job dev position - Django is right way. BTW Parick -which one of these is your favourite one?
Great video! All the info needed in just 16 minutes.
I struggle with the idea of microservice versus framework. In our company, we aim to build microservices. A microservice is either a visualization layer or maybe business logic or maybe an entity store service. The first example (Flask) had all of those combined.
10:14 Can the FastAPI's documentation page be used as a GUI for the API where the user POSTs values and gets responses back? Can it be hosted on a server for public access?
Django's syntax seems cleaner and more readable than others
For those who are getting error for the flask code,
at 2:37
replace line 18 with
app.app_context():
# Creating the database tables
db.create_all()
Iv been trying to puzzle out what he says @ 6:26 for more than 10 minutes but finally figured it out: type hints, not type in, nor tie pins (as the auto generated captions believes he means)
This was a fun little exercise in the different frameworks. I think I must be using a different version of python or something because using flask exactly like you wrote it seems to give me an error regarding using it outside of the app context. Which can be fixed with a few lines of code appropriately placed, if you understand where and why. For the rest of them this is what I wanted to see coming here (although the post/get/put/delete not being fully hashed out did kind of bother me).
@ragsdale9 can you provide the few lines of code for the fllask example. Im getting the same error
hey I was able to find the solution on github haha!
As a mostly-flask-user I've been using bottle for the last few months. Man, this framework really blew my mind. While the basics are nothing special, advanced in-depth knowledge really makes it one of the most powerful (as in flexiblility and performance) frameworks in my opinion.
You could say you've been "hitting the bottle" for the last few months! *badumtsss* (I'll see myself out now...)
I can programme big and fast Web projects by Flask only ?
Flask is so cool for small and medium size projects and can increase your speed in so many ways, i dont have any experience with fastapi but it looks the same.
Thanks for the detailed code comparison Patrick, especially with the in-depth code comparison. That was a lot of work. Much appreciated. Thanks. I also looked at your channel. Lots of useful tutorials. Thanks. Subscribed.
I use flask & gunicorn in docker containers but FastAPI's self documenting seems kinda handy....
Love this video!
I use the FastAPI framework and it's absolutely amazing. I'm working on learning Django now but it was useful to learn the differences between the frameworks.
Great overview . My more opinionated take: Fastapi for simple APIs and micro services, django for anything more complicated.
As soon as you have a db, you’ll want an admin app.
Any large app in flask ends in the desire to have used django. And btw, with a class based view the django code could have been even simpler. And things like caching and django_q for queues bring the speed in complex apps.
Agree fully, the batteries Django includes are hard-won battle scars from those that went before you. There is usually very little benefit in re-inventing the wheel, focus on whats unique to your app.
For smaller projects you should be designing to avoid those issues in the first place.
A very clear comparison indeed. Thanks.
Amazing Video, Much appreciated. I learned a lot from this. Subscribed ❤
I have completed 3 projects in Django now interested in API, but confused a little bit what now I choose DRF or FastAPI.
I read on web that FastAPI is easy and fast but Django REST API is secured. Which I now choose become a conflict for me, now need guide from seniors Django developers with their experience in this regard.
All of them are good, but I like the Django style
Managed to create a pretty cool app with a massive database using Flask in 6 weeks, its great.
Have been using Django since version 1.3. Also used flash for some minor service. But fast api looks very interesting.
If I had more time I'd write a shorter letter. Thank you for a short and concise video. Very well done!
Hey i use Pyodbc and write raw sql queries in flask. I am able to do everything. I want to know is there any major benefits of using ORM?
Sehr Gut Patrick, Danke Schon hehehehe i really enjoyed this, now i can use it to introduce the concepts to my students. great work.
I've only used Django for only 4 months, and I love the framework. Just out of curiosity have you tried creating a frontend project like Angular or React or maybe mobile like a flutter or React native with one of these backend technologies? Is Django easier when used for making a GET request for a frontend technology? Or would you recommend one of the other backend technologies like FastAPI or Flask instead?
Not sure yet but I am thinking about focusing on Django with React or maybe Angular for Full Stack, any thoughts? thanks Patrick...
Many thanks that’s a lot of work well done.
I started couple of years ago with Django and found my self stuck with it 😅
Maybe I need to explore more specially the fact API looks interesting
It's called FAST API.
Super impressive video! Covered a lot of info concisely - must have taken a lot of time! FastAPI seems to pique my interest for a micro-service based app. Also seems to get a lot done without a huge learning curve. I’ve worked with Django and it’s awesome! if you know your way around.
Hey Patrick, Your video is awesome! thanks for sharing. On index 7:50, I have to exclude "autocommit=False" b/c it is not working, and it says "internal server error" or something like that. After I that, it is working like breeze!
Why are we creating a venv file? Aren't we already running the files inside a python interpreter within an environment? Also, my python environment which I created is in a different location, and the location for the folder scripts are in a different folder. How to run the export variables in this case if my flask library is installed in main interpreter location of the environment and not on script location? Current I am facing this error: export: The term 'export' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Great content, dude! Awesome!
Similar stuff on Stremlit or out of the equation for what is used for?
Thanks for the detailed walktthrough. I was hoping to get an overall judgement or review of each. What is your answer to the "which is best?" question?
For sure, this video was a lot of work, thanks for it! Now I'm once again on the verge of deciding between an older well-tested Framework (Django) and a cool newcomer (FastAPI)... nerd problems...
As Java Senior for sure I would like to know about Fastapi. But still it's not so good structured as spring boot web. But I like it.)))
What's the theme you're using? it's so neat! I want it
what combination do you think is best to learn for newbie?
1:31 How can you create a python environment in terminal?
Awesome useful video , in the end I think that the Django is the best option , and it was cleaner and very powerful one. but those other two were good.
Thanks Patrick, for this excellent work.
FastApi is best one for API development my experience
Thank you
I have experienced Flask and Django both. Nice comparison. I liked Flask, as you mentioned, it is quick for beginner and also we can run custom scripts easily with flask to display output on web.(I know we can do the same with FastAPI and Django as well 😄)
As someone coming from other programming languages, I find FastApi the most attractive option.
It is Flask for me, i love the simple and intuitive way of handling things with Flask, its the most Pythonic of the 3 and also the most functional, and i love working in a functional way.
Do you mean functional in a paradigmatic or in an efficiency way?
@@robin888official in a paradigmatic way
@@facundogoiriz7323 Can you give any examples? I moved from a functional language to Python and the whole language is by no means functional. Still, Pythonic way of writing most things fullfills my need for "clearness" and conciseness. I am using Flask too and I think it's very neat.
Couldn't get_db() from FastAPI example be replaced with context manager (with Session)?
Great presentation! Thanks for all the time you put into it. 👍🏼
Great comparasion!
No comments! Just subscribed 👍
Hi
Hola, buen video 👍
Consulta: de los 3 frameworks: Django, FastApi y Flask... Cuál recomendarias para este 2022.o 2023.??
Saludos
Great video! thanks for the examples
Thank you for this video, it helped me get an idea of what to start (i didnt understand anything 😅😅) but it gave me an idea as what to expect from each one. A hard decision to make of which one to begin with. any suggestions or roadmap are welcome, Thanks.
Hey, what theme are you using? Thanks!
I’m not sure if anyone else has mentioned this (sorry if it’s a duplicate), but in your vs code terminal you should be using a power line patched font. That’s why you have black squares before your prompt.
Congrats on hitting 100K!
I got to know FastAPI with this video and it looks great! Also great job with your video!
I can programme big and fast Web projects by Flask only ?
And I can scaling easy in Flask ?
how is he making the export FLASK_APP stuff when i type it in my terminal it gives errors
Very good video. Im new in coding and python is my first language. So to deploy smaller functions what should i use. Im not good in html and css...does any of the framework do simple styling or do i need to become better in html and css for that.
Go for flask.
Very nice & clear explanation.
What about bottle which we forced to use in University
I’m new to learning python. I’m watching this with limited knowledge over 95% of what’s being presented. This seems like a lot to remember. How much of this is expected knowledge vs googled?
Clear and concise video. Thanks :D
Love the video thanks!
Would 'Flet' be considered a one of these Frameworks?
Awesome work!