Compare commits

...

15 commits

Author SHA1 Message Date
b058b2d155 vault backup: 2024-11-02 19:04:40
Affected files:
docs/Guides/Django REST Framework/1 - Setup.md
docs/Guides/Django REST Framework/2 - Initialize your First Project.md
docs/Guides/Django REST Framework/3 - Project Structure.md
docs/Guides/Django REST Framework/4 - REST Framework Setup.md
docs/Guides/Django REST Framework/5 - User Setup and Migrations.md
docs/Guides/Django REST Framework/6 - Django Admin.md
docs/Guides/Django REST Framework/Django REST Framework.md
2024-11-02 19:04:40 +08:00
848c9cdd58 vault backup: 2024-11-02 19:00:12
Affected files:
docs/Guides/Django REST Framework/7 - Writing API Endpoints.md
docs/Guides/Django REST Framework/8 - Role-Based Access Control (RBAC) (Work in progress).md
docs/Guides/Django REST Framework/9 - Viewsets vs API Views (Work in progress).md
docs/Guides/Django REST Framework/_resources/7 - Writing API Endpoints/6a3d52433be9340109bf93795854e3b8_MD5.jpeg
docs/Guides/Django REST Framework/_resources/7 - Writing API Endpoints/9c1af7c5c436fec290cc1dbda9c9ac5c_MD5.jpeg
2024-11-02 19:00:13 +08:00
5a1a746184 vault backup: 2024-11-02 18:31:18
Affected files:
docs/Guides/Django REST Framework/7 - Writing API Endpoints.md
2024-11-02 18:31:18 +08:00
c7ff5fb5b7 vault backup: 2024-11-02 18:30:18
Affected files:
docs/Guides/Django REST Framework/7 - Writing API Endpoints.md
2024-11-02 18:30:18 +08:00
8c515d70d7 vault backup: 2024-11-02 18:29:18
Affected files:
docs/Guides/Django REST Framework/7 - Writing API Endpoints.md
2024-11-02 18:29:18 +08:00
c5827afeef vault backup: 2024-11-02 18:28:18
Affected files:
docs/Guides/Django REST Framework/7 - Writing API Endpoints.md
2024-11-02 18:28:18 +08:00
e7707a3982 vault backup: 2024-11-02 18:27:18
Affected files:
docs/Guides/Django REST Framework/7 - Writing API Endpoints.md
2024-11-02 18:27:18 +08:00
5598444ba3 vault backup: 2024-11-02 18:26:18
Affected files:
docs/Guides/Django REST Framework/7 - Writing API Endpoints.md
docs/Guides/Django REST Framework/_resources/7 - Writing API Endpoints/695f930d4993ff8d8f2ccf806bd9ca9f_MD5.jpeg
2024-11-02 18:26:18 +08:00
36e895d3dc vault backup: 2024-11-02 18:25:18
Affected files:
docs/Guides/Django REST Framework/7 - Writing API Endpoints.md
2024-11-02 18:25:18 +08:00
51fd71778b vault backup: 2024-11-02 18:24:18
Affected files:
docs/Guides/Django REST Framework/7 - Writing API Endpoints.md
2024-11-02 18:24:18 +08:00
086fc8da2e vault backup: 2024-11-02 18:23:17
Affected files:
docs/Guides/Django REST Framework/7 - Writing API Endpoints.md
2024-11-02 18:23:17 +08:00
cf2c6134bd vault backup: 2024-11-02 18:22:17
Affected files:
docs/Guides/Django REST Framework/7 - Writing API Endpoints.md
docs/Guides/Django REST Framework/_resources/7 - Writing API Endpoints/9bb3d5c0c6da24a9d80d81d1e5b4a716_MD5.jpeg
docs/Guides/Django REST Framework/_resources/Pasted image 20241102182116.png
2024-11-02 18:22:17 +08:00
748c09dc31 vault backup: 2024-11-02 18:21:17
Affected files:
docs/Guides/Django REST Framework/_resources/Pasted image 20241102182116.png
2024-11-02 18:21:17 +08:00
5f352c1725 vault backup: 2024-11-02 18:19:17
Affected files:
docs/Guides/Django REST Framework/7 - Writing API Endpoints.md
2024-11-02 18:19:17 +08:00
9fd479f0dd vault backup: 2024-11-02 18:17:16
Affected files:
docs/Guides/Django REST Framework/6 - Django Admin.md
2024-11-02 18:17:16 +08:00
14 changed files with 59 additions and 7 deletions

View file

@ -58,3 +58,5 @@ This guide does not cover the proper usage of Git and so you may need to look up
You can proceed with the typical installation using defaults (no need to change anything), just click Next/Install.
With that out of the way, you can proceed to setting up your Django REST Framework project.
Up Next: [2 - Initialize your First Project](2%20-%20Initialize%20your%20First%20Project.md)

View file

@ -90,3 +90,5 @@ Once that's done, run the command `python manage.py runserver 0.0.0.0:8000` to s
Your Django project will now be visible on the URL **[https://localhost:8000](https://localhost:8000)**
![377f5134b0525b830116a64d7699368f_MD5](_resources/2%20-%20Initialize%20your%20First%20Project/377f5134b0525b830116a64d7699368f_MD5.jpg)
Up Next: [3 - Project Structure](3%20-%20Project%20Structure.md)

View file

@ -78,4 +78,6 @@ Add **rest_framework** to **INSTALLED_APPS**
![c327ae10edcfd245d0ad4cfe787bf9ae_MD5](_resources/3%20-%20Project%20Structure/c327ae10edcfd245d0ad4cfe787bf9ae_MD5.jpg)
The next section will then tackle building a REST API with DRF
The next section will then tackle building a REST API with DRF.
Up Next: [4 - REST Framework Setup](4%20-%20REST%20Framework%20Setup.md)

View file

@ -53,3 +53,5 @@ Your setup should then look like this
There is no need to include the **api** app in your **INSTALLED\_APPS (config/settings.py)**
The next section will handle users and authentication
Up Next: [5 - User Setup and Migrations](5%20-%20User%20Setup%20and%20Migrations.md)

View file

@ -230,3 +230,5 @@ With that out of the way, running your Django project (`python manage.py runserv
It's always important to apply your migrations before running your app, otherwise you might run into issues.
In the next section, you will be creating your first (superuser) account to access the Django admin panel.
Up Next: [6 - Django Admin](6%20-%20Django%20Admin.md)

View file

@ -21,3 +21,5 @@ To create a superuser or administrator account. Open a terminal inside your Djan
Be sure to enter a secure password! Django has password validators built-in and may warn you.
![image.png](_resources/6%20-%20Django%20Admin/de9dd7f7b5589adcd14eb7a5358eeaa0_MD5.jpg)
Up next: [7 - Writing API Endpoints](7%20-%20Writing%20API%20Endpoints.md)

View file

@ -37,6 +37,7 @@ Serializers define the model used using the class **Meta**. Using a DRF serializ
The serializer above only returns 4 fields (id, username, email, full\_name). Any other fields are omitted such as age, birthday, and so on.
Serializers can be found in the `serializers.py` file of a Django REST Framework app.
#### Serializer - Validation
In addition to manipulating your model before JSON serialization, DRF serializers allow you to validate fields to ensure proper values are provided.
![image.png](_resources/7%20-%20Writing%20API%20Endpoints/972f5b24877092dabefa35683e9d8a37_MD5.jpg)
@ -81,4 +82,31 @@ Knowing where you should place your validation functions is something you will e
If you're just starting off, this isn't something you should be too worried about. Just knowing that the serializer parses to JSON is plenty enough to get started with building CRUD apps.
### Views
Work in progress!
If serializers convert the underlying model to JSON, then views return the web response. They are situated in the `views.py` file of a Django REST Framework app.
![](_resources/7%20-%20Writing%20API%20Endpoints/9bb3d5c0c6da24a9d80d81d1e5b4a716_MD5.jpeg)
Views take in HTTP requests passed in from the actual URL. You can specify a `queryset` to define what objects to return and specify a serializer which will be used to structure the returned data.
Much like with DRF serializers, you can customize them what's returned. This can be to check whether the user owns what he/she's modifying and then forbidding access, or something else entirely depending on your use case.
![](_resources/7%20-%20Writing%20API%20Endpoints/695f930d4993ff8d8f2ccf806bd9ca9f_MD5.jpeg)
If you're using Memcached or Redis, you'll most likely have it integrated here, similar to the example above. Caching is something you won't have to worry about right now and will be tackled in later sections.
### Note!
The concept of serializers only exist within Django REST Framework and APIs. If you're using only Django as a full stack framework, without any API endpoints and without Django REST Framework, you likely won't run into them at all.
Many of you will also notice that there's two ways to go about setting up restrictions, one within views and another in the serializer itself. This will be discussed further in the next section.
### URLs
URLs are the most self-explanatory part of this section. They define the URL that should be used for your API endpoint. They can be found in the `urls.py` file of your Django REST Framework app.
![](_resources/7%20-%20Writing%20API%20Endpoints/9c1af7c5c436fec290cc1dbda9c9ac5c_MD5.jpeg)
URLs must be included in your `urlpatterns`, otherwise, they will not be registered in your API.
You can build complex URLs by nesting paths, similar to what we've done with [4 - REST Framework Setup](4%20-%20REST%20Framework%20Setup.md) (e.g. `https://localhost:8000/api/v1/notifications/)
![](_resources/7%20-%20Writing%20API%20Endpoints/6a3d52433be9340109bf93795854e3b8_MD5.jpeg)
When using viewset templates, you will need to specify a router to handle generation of all the `GET`, `POST`, and `DELETE` actions among other things since viewsets are effectively templates.
If on the other hand, you're using [generic views ](https://www.django-rest-framework.org/api-guide/generic-views/), you can simply call them directly inside your `urlpatterns`
This will be discussed in further detail in [9 - Viewsets vs API Views (Work in progress)](9%20-%20Viewsets%20vs%20API%20Views%20(Work%20in%20progress).md)
Up next: [8 - Role-Based Access Control (RBAC) (Work in progress)](8%20-%20Role-Based%20Access%20Control%20(RBAC)%20(Work%20in%20progress).md)

View file

@ -0,0 +1,9 @@
(Work in progress)
### Role-Based Access Control (RBAC)
There will be instances where you will need to restrict what is returned to the user.
- A student may want to see only the subjects they're currently enrolled in.
- An author would not want to edit a book they don't own
- A bank clerk shouldn't be able to delete bank transactions
These restrictions and rules all fall under the concept of Role-Based Access Control or RBAC. Whether you're using...

View file

@ -0,0 +1 @@
(Work in progress)

View file

@ -10,3 +10,5 @@ Django can be used as-is to develop full stack web apps which include your front
You will be using Django alongside Django REST Framework to instead build a backend API, which will only serve data from your database, and not serve as a frontend framework. This guide will focus on data, so no fancy frontend design stuff!
This guide has concepts that are similar to the official guide for Django linked [here](https://docs.djangoproject.com/en/5.1/intro/tutorial01/). Check it out as well!
Up Next: [1 - Setup](1%20-%20Setup.md)

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB