Django-Ninja APIs - Modern API Development in Django

  Рет қаралды 16,923

BugBytes

BugBytes

Күн бұрын

Github: github.com/bugbytes-io/django...
In this video, we'll build an API using Django-Ninja that allows us to fetch devices, fetch locations, and assign a location to a device.
This video will show django-ninja's use of Schemas - subclasses of Pydantic BaseModels - and the use of decorators to create API endpoints.
☕️ 𝗕𝘂𝘆 𝗺𝗲 𝗮 𝗰𝗼𝗳𝗳𝗲𝗲:
To support the channel and encourage new videos, please consider buying me a coffee here:
ko-fi.com/bugbytes
📌 𝗖𝗵𝗮𝗽𝘁𝗲𝗿𝘀:
00:00 Intro
01:25 Setting up Django project in Python virtual environment
03:46 Creating models for IoT Devices
07:46 Adding Data in Django Admin
09:11 Creating Schemas with django-ninja
12:04 Creating django-ninja API endpoints
17:39 Automatic Swagger docs with django-ninja
18:32 Adding Device Detail endpoint with path-parameter
21:07 POST endpoint for adding new devices
33:29 Add endpoint to re-assign location to device
39:19 Adding django-cors-headers to project
𝗦𝗼𝗰𝗶𝗮𝗹 𝗠𝗲𝗱𝗶𝗮:
📖 Blog: bugbytes.io/posts/
👾 Github: github.com/bugbytes-io/django...
🐦 Twitter: / bugbytesio
📚 𝗙𝘂𝗿𝘁𝗵𝗲𝗿 𝗿𝗲𝗮𝗱𝗶𝗻𝗴 𝗮𝗻𝗱 𝗶𝗻𝗳𝗼𝗿𝗺𝗮𝘁𝗶𝗼𝗻:
Django-Ninja: django-ninja.dev/
ModelSchema: django-ninja.dev/guides/respo...
Django-Ninja Request Body: django-ninja.dev/guides/input...
AutoSlugField: django-extensions.readthedocs...
#python #webdevelopment #django #pydantic

Пікірлер: 76
@AmoahDevLabs
@AmoahDevLabs 5 ай бұрын
Oh wow. I can't believe you're doing a vidoe on Django-ninja again. Thanks very much.
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks for the support!
@seydinaoumarsamabaly1806
@seydinaoumarsamabaly1806 5 ай бұрын
I have learned django-ninja on this channel, but I can say this another level. Thank you so much man !
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks a lot man!!
@dmitrymikhailovnicepianomu8688
@dmitrymikhailovnicepianomu8688 5 ай бұрын
Thank you! Can’t wait to see the continuation.
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks a lot!
@dowletaydogdyyew6360
@dowletaydogdyyew6360 3 ай бұрын
Absolutely amazing video, I already fell in love with Django-Ninjas. Thank you so much!
@bugbytes3923
@bugbytes3923 3 ай бұрын
Glad to hear that, thanks so much!
@sebwylleman
@sebwylleman 5 ай бұрын
Another banger, love the consistency of this channel
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks a lot!
@ahmedivy
@ahmedivy 5 ай бұрын
The only thing i miss in fastapi was django like orm, and this was perfect
@bugbytes3923
@bugbytes3923 5 ай бұрын
Yes! The Django ORM cannot be beaten!
@anago7
@anago7 5 ай бұрын
I respect you seriously. In my previous company, we introduced Django-ninja. And integrated with Flutter for frontend. Your contribution to django ninja is very impressive. Also I think you have a stubborn philosophy about your works and I advocate it.
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks a lot for this comment, really appreciate it! I hope django-ninja served your purposes in the previous company - would love to explore Flutter in future videos.
@fabsync
@fabsync 5 ай бұрын
super awesome man! Love always your approach. Looking forward to more videos on this series.. !
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks a lot man!
@stephancodes
@stephancodes 5 ай бұрын
I really like django extension to populate the slug automatically. I normally created the prepopulated fields in the model admin, but this is much cleaner
@bugbytes3923
@bugbytes3923 5 ай бұрын
It's a cool field, for sure!
@theintjengineer
@theintjengineer 5 ай бұрын
BugBytes' Videos are soo goood🤯🤯
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks so much!
@blees123
@blees123 5 ай бұрын
This is amazing work, keep up the great content.
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks a lot! Will try my best :D
@robhafemeister3100
@robhafemeister3100 5 ай бұрын
Amazing how much and how fast I have learned from your videos. I really like django-ninja, FastAPI with the Django ORM.
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks a lot Rob! And yeah, they're all great options.
@mahmoudtokura
@mahmoudtokura 5 ай бұрын
This was beautiful to watch. I have always struggled with DRF; this will be my new go-to framework. It allows you to code as you picture it without restrictions or being overly opinionated. In my opinion, this is more pythonic.
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks for watching! Agreed - more Pythonic and a nicer dev experience!
@leoe.r.7338
@leoe.r.7338 5 ай бұрын
Great tutorial.
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks a lot!
@aashayamballi
@aashayamballi 5 ай бұрын
thank you!
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks a lot for watching!
@swelanauguste6176
@swelanauguste6176 5 ай бұрын
Thank for the video. I have been waiting for a Django Ninja update video. Could you please do a video on django-extensions and Django-extras, I have seen you using it a few times
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thank you. For sure, django-extensions would be worth covering in more detail - thanks for the suggestion!
@frameff9073
@frameff9073 5 ай бұрын
thank you
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks for watching!
@deymonster2u
@deymonster2u 5 ай бұрын
Very cool and simple! When will be the next video with React?
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thank you! I think the follow-up video will be on Saturday!
@aek64
@aek64 5 ай бұрын
Greate video. I don't know how to make the api calls more secure. Can you use the built-in users that always exist in a Django site? I would love to see this in the next video because security is needed even for basic API:s. Maybe someone has a link to share how it is done.
@haseeb9621
@haseeb9621 5 ай бұрын
@jhalmu
@jhalmu 5 ай бұрын
Thanks for wideo, I needed this. One question: What diffrence is use django-extras/extensions slug vs djangos slug.field?
@jamoinmoin
@jamoinmoin 5 ай бұрын
I don't quite see the benefit of Ninja & Schemas over DRF & serializers. Am I missing something?
@sagiyoav
@sagiyoav 5 ай бұрын
Following
@bugbytes3923
@bugbytes3923 5 ай бұрын
My understanding from reading opinions on reddit and other sites - is that a lot of people find serializers/views in DRF quite confusing when you need to go beyond basic CRUD stuff. I think there's a bit of a learning curve to understand its nuances, but I personally love DRF, and of course many others do too. I guess Ninja is just a different approach with less "magic" in the views.
@shintaii84
@shintaii84 4 ай бұрын
Async async async!
@keyton_weissinger
@keyton_weissinger 5 ай бұрын
Great video! Thank you. This looks like a great alternative to DRF to add a REST api to an existing Django app, no?
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks a lot Keyton! That's exactly the use-case I think - if you have a Django app (or want to create one) that needs an API, then this is a nice alternative to DRF!
@codelabspro
@codelabspro 4 ай бұрын
Can you do a video on authentication with Django-ninja please
@chengsu8270
@chengsu8270 4 ай бұрын
I need authentication too. Thank @bugbytes3923
@CristianMolina
@CristianMolina 5 ай бұрын
Thanks for the video! One question: There are _2_ "get_devices" methods, for devices and locations endpoints but it still works, I assume because of the decorator but the 2nd method doesn't override the first one?
@bugbytes3923
@bugbytes3923 5 ай бұрын
Yeah, this was a mistake (corrected in the django-ninja-extra video) - the second function should be called "get_locations()". It must work due to the decorator wrapping the function!
@kingbabu7373
@kingbabu7373 5 ай бұрын
In django dynamic addcontanct button using htmx how to get single submitt button to submit multiple forms to database
@theintjengineer
@theintjengineer 5 ай бұрын
In the Schema for Location, you have 'id', 'name'. I get the name part, since it's defined on the model. I also get the id on the Device Schema, since that's also on the Device Model. I just don't get where the id for the locations is coming from, since location has only a single field called 'name'. Thank you, BugBytes 🙌🏽
@steogen
@steogen 5 ай бұрын
I believe the id field is added to all models by default. No need to be set up by the user. It’s necessary for the database to establish a unique primary key for each instance of the model
@theintjengineer
@theintjengineer 5 ай бұрын
@@steogen, oooooh; and he explicitly sets up the id field for Device using uuid4 because he didn't want to have just a simple integer as the id for the devices, right? I get it now. Thank you very much. You're a good person🤝🏾
@steogen
@steogen 5 ай бұрын
@@theintjengineer that’s my understanding too. Glad I could help ☺️
@richcodesweb
@richcodesweb 5 ай бұрын
Trying to create Many-to-Many relationships, you'd have thought that you'd do it in a similar way, `list[str]` but when I try this, I always get an error, saying that fields are missing, that don'e even appear in the schema, or the model ....
@DhavalAhir10
@DhavalAhir10 5 ай бұрын
Now No need of Django Rest Framework?
@dimasarestu2043
@dimasarestu2043 5 ай бұрын
Can i use it for existing django app?
@bugbytes3923
@bugbytes3923 5 ай бұрын
Yes, definitely!
@marcosaugustoschultzwutke6670
@marcosaugustoschultzwutke6670 5 ай бұрын
Hello! I'm having difficulty connecting django 5.0 with the oracle 11g database. Do you know of any solution for this?
@bugbytes3923
@bugbytes3923 5 ай бұрын
I've not connected Django to Oracle for a while, so not sure what the issue is - sorry! Do you have any errors/exceptions that you're seeing?
@leftblank5315
@leftblank5315 5 ай бұрын
Please make sure the Instant Client is installed and in the path
@marcosaugustoschultzwutke6670
@marcosaugustoschultzwutke6670 5 ай бұрын
The Instant Client is installed and in the correct path. I have a Laravel application using Instant Client and it works perfectly. I read that Django 5 only works with Oracle version 19 or higher.@@leftblank5315
@seydinaoumarsamabaly1806
@seydinaoumarsamabaly1806 5 ай бұрын
Hey, to connect Django higher than 3 to oracle you may need Oracle 19c or higher. If you want specifically use your Oracle 11g, you have to downgrade to Django 3.2 or 3.1 or 3.0. Hope this helps !!!
@marcosaugustoschultzwutke6670
@marcosaugustoschultzwutke6670 5 ай бұрын
Thank you.@@seydinaoumarsamabaly1806
@Septumsempra8818
@Septumsempra8818 5 ай бұрын
Any CI/CD vids coming? I need to know the best strategies to update the database of a production site. Most tuts teach how migrations works and usually just delete them all (even in sql table) when they make a mistake. However, what's the process of taking a prod site, making a whole bunch of migrations (eg. Running field by field indexing effects on speed test) then once the desired migration is found, how do you ensure that only one migration file is created with only the final desired migration set? I like this one-file migration process, but it might not be the best way. Any suggestions on how to optimize migration workflows so as to keep up rolling out new features.
@meesix
@meesix 5 ай бұрын
Thank you for promoting Ukrainian products!
@bugbytes3923
@bugbytes3923 5 ай бұрын
Thanks a lot! :)
@leftblank5315
@leftblank5315 5 ай бұрын
I guess FastAPI is no longer modern?
@bugbytes3923
@bugbytes3923 5 ай бұрын
FastAPI is what I'd think of when talking about "modern" Python API frameworks - so yes, I'd say it is! Django-Ninja brings that approach to Django.
@leftblank5315
@leftblank5315 5 ай бұрын
@@bugbytes3923 my post was a bit sarcastic. It seems everyday there is a new framework. My point is, why would I learn yet another one, when FastAPI is well-established and is here to stay? Not to mention the author of Ninja is mixing politics into his work
@bugbytes3923
@bugbytes3923 5 ай бұрын
​@@leftblank5315 This is specifically for Django apps that might need APIs. If you have a Django app - better to keep your API in Django, make use of the models/ORM, and avoid having a separate FastAPI app just to expose an API over the same data model. Ninja gives an alternative over Django REST Framework for developers that are familiar with, or prefer, the Pydantic/FastAPI way of doing things. Not much new to learn tbh, if you're already a fan of FastAPI. But remember, there are many thousands more web apps running Django than FastAPI - so ninja gives an easy way of migrating towards these new approaches without ditching Django entirely. No idea about the politics of the author. He's Ukrainian I believe, so ....
@leftblank5315
@leftblank5315 5 ай бұрын
@@bugbytes3923 it makes sense in the context of Django. I've used DRF for years.
Stupid Barry Find Mellstroy in Escape From Prison Challenge
00:29
Garri Creative
Рет қаралды 21 МЛН
The day of the sea 🌊 🤣❤️ #demariki
00:22
Demariki
Рет қаралды 85 МЛН
Универ. 10 лет спустя - ВСЕ СЕРИИ ПОДРЯД
9:04:59
Комедии 2023
Рет қаралды 2,7 МЛН
Why You Should Use Pydantic in 2024 | Tutorial
13:56
ArjanCodes
Рет қаралды 61 М.
How to add INSTANT database search with Django and HTMX 🕵️
4:40
Why You NEED To Learn FastAPI | Hands On Project
21:15
Travis Media
Рет қаралды 149 М.
Why is Vite Everywhere? | Evan You
38:32
OpenSauced
Рет қаралды 30 М.
FastAPI, Flask or Django - Which Should You Use?
9:49
Tech With Tim
Рет қаралды 49 М.
Just Use Pydantic
8:11
John Watson Rooney
Рет қаралды 21 М.
Stupid Barry Find Mellstroy in Escape From Prison Challenge
00:29
Garri Creative
Рет қаралды 21 МЛН