ππ ΠΠΈΡΠ΅ΠΌ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π°ΠΌΠ΅ΡΠΎΠΊ Π½Π° Django, Django Ninja REST Framework ΠΈ Alpine.js
ΠΠ·ΡΡΠ°Π΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Django Ninja, Alpine.js ΠΈ Axios Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π°ΠΌΠ΅ΡΠΎΠΊ.
Π Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ Π»ΡΠ±ΠΎΠΉ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΉ Django-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π±ΡΠΊΠ΅Π½Π΄ ΠΈ ΡΡΠΎΠ½ΡΠ΅Π½Π΄: Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΠΏΠΈΡΡΡ Π½Π° Django REST Framework (DRF) ΠΈΠ»ΠΈ FastAPI, Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΡΡ β Π½Π° React, Angular ΠΈΠ»ΠΈ Vue. ΠΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ Π²ΡΡΠΎΠΊΠΎΠ½Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° β ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ΅Π½. ΠΡΠΈ ΡΡΠΎΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΡ Django ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° β ΠΈ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅.
ΠΠΎ Π΅ΡΠ»ΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠ° Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ, Π° ΠΈΠ΄Π΅Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° ΡΡΠΎΠ½ΡΠ΅Π½Π΄ ΠΈ Π±ΡΠΊΠ΅Π½Π΄ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΈΠ·-Π·Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ Π±Π΅Π· ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΡΡΡΠ°Π½ΠΈΡ β ΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½Π΅Π΅ Π²ΠΎΠΏΠ»ΠΎΡΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΈΠ±ΡΠΈΠ΄Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ:
- ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Β«Π±Π°ΡΠ°ΡΠ΅ΠΉΠΊΠΈΒ» Django β Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠΎΡΠΌΡ, ΡΠΈΡΡΠ΅ΠΌΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ;
- ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ CRUD Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡ;
- Π²ΠΊΠ»ΡΡΠΈΡΡ Π² ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΠΆΠ°Π½Π³ΠΎ Π»ΡΠ±ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΠ΅ JS-ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ.
ΠΠ±Π·ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Notes, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π΅ΡΡΡ Π½Π° Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Django. ΠΠΎΠΌΠΈΠΌΠΎ ΠΠΆΠ°Π½Π³ΠΎ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
- Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Django Ninja Π΄Π»Ρ API ΠΈ CRUD.
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Axios β Π΄Π»Ρ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ Π±ΡΠΊΠ΅Π½Π΄Ρ.
- Π£Π»ΡΡΡΠ°Π»Π΅Π³ΠΊΠΈΠΉ JS-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Alpine.js ΠΈ CSS-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Bootstrap β Π΄Π»Ρ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π°.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ΄ΠΈΠ½ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΈ Π΄Π²Π° Π³ΠΈΠ±ΡΠΈΠ΄Π½ΡΡ ΡΠ°Π±Π»ΠΎΠ½Π° Django/Alpine.js:
- base.html β ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Axios, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Alpine.js ΠΈ Bootstrap.
- index.html β Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π²ΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Π·Π°ΠΌΠ΅ΡΠΎΠΊ. ΠΠ°ΡΡΠΎΡΠΊΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡΡΡ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ.
- detail.html β ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π²ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΊΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ. ΠΠ°ΡΡΠΎΡΠΊΠΈ Π·Π°ΠΌΠ΅ΡΠΎΠΊ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡΡΡ Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΡΠ° Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π½Π° Π‘Π΄Π΅Π»Π°Π½ΠΎ.
ΠΠ΅ΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
ΠΡΠΊΠ΅Π½Π΄ ΠΈ API
ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ API ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π½ΠΎΠ²ΡΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ Django Ninja. ΠΡΠΎ ΠΎΡΠ»ΠΈΡΠ½Π°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Django REST Framework ΠΈ FastAPI, ΠΏΡΠΈΡΠ΅ΠΌ ΠΏΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡ Django Ninja Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ. Django Ninja Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ DRF ΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½Π΅Π΅.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ Django Ninja β ΠΏΠΎΠΊΠ° ΡΡΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΈ ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ½ΡΠΌ (ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ DRF), Π½ΠΎ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΎΠ±Π΅ΡΠ°ΡΡ ΡΠ΅ΡΠΈΡΡ ΡΡΡ Π·Π°Π΄Π°ΡΡ.
ΠΠ°ΡΠ½Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ:
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ Π°Π΄ΠΌΠΈΠ½Π°:
Π‘Π΄Π΅Π»Π°Π΅ΠΌ Π½ΡΠΆΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π² ΡΠ°ΠΉΠ»Π΅ config/settings.py:
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°ΠΉΠ» notes/urls.py Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ:
ΠΠΎΠ±Π°Π²ΠΈΠΌ Π½ΡΠΆΠ½ΡΠ΅ ΠΌΠ°ΡΡΡΡΡΡ Π² config/urls.py:
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π»Ρ Π·Π°ΠΌΠ΅ΡΠΎΠΊ ΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ:
ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² admin.py:
Π€Π°ΠΉΠ» notes/views.py Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
Π’Π΅ΠΏΠ΅ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ:
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ API ΠΈ CRUD-ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π²Π° ΡΠ°ΠΉΠ»Π° β notes/schemas.py ΠΈ notes/api.py. Π‘Π½Π°ΡΠ°Π»Π° Π·Π°ΠΉΠΌΠ΅ΠΌΡΡ ΡΡ Π΅ΠΌΠ°ΠΌΠΈ β ΠΎΠ½ΠΈ Π² Django Ninja Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ΅ ΠΆΠ΅ ΡΠ°ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎ ΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ Π² Django REST Framework, ΡΠΎ Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ Π² Π±Π°Π·Ρ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Π½ΠΈΡΡ Π² Π½Π°Π±ΠΎΡΠ°Ρ Π΄Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡ Π΅ΠΌΠ°ΠΌΠΈ NoteIn, NoteOut, NoteUpd, CategoryIn, CategoryOut:
ΠΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ API ΠΎΠΏΠΈΡΠ°Π½Π° Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ β notes/api.py:
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ API:
ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ http://localhost:8000/api/docs β ΡΡΠΎ Π°Π΄ΡΠ΅Ρ Django Ninja API:
Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΈ Π·Π°ΠΌΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΡΠΌΠΎ Π½Π° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅. ΠΡΠ±Π΅ΡΠΈΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ POST Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΠΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, Π½Π°ΠΆΠΌΠΈΡΠ΅ ΠΊΠ½ΠΎΠΏΠΊΡ Try it out, Π²Π²Π΅Π΄ΠΈΡΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ:
ΠΠ»ΠΈΠΊΠ½ΠΈΡΠ΅ Π½Π° Execute β Π³ΠΎΡΠΎΠ²ΠΎ, ΠΏΠ΅ΡΠ²Π°Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ :
HTTP-Π·Π°ΠΏΡΠΎΡΡ ΠΊ Π±ΡΠΊΠ΅Π½Π΄Ρ
ΠΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ Π±ΡΠΊΠ΅Π½Π΄Ρ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Axios, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½Π°Ρ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅ base.html. Axios β ΡΡΠΎ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° fetch Ρ Π±ΠΎΠ»Π΅Π΅ Π΄ΡΡΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ. ΠΠΎΠ΄ HTTP-Π·Π°ΠΏΡΠΎΡΠΎΠ² ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² index.html ΠΈ detail.html. Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΡ notes/templates ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΡΠ΄Π° Π²ΡΠ΅ ΡΡΠΈ ΡΠ°Π±Π»ΠΎΠ½Π°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΡ static Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ Ρ notes ΠΈ config, ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΠ΅ Π² Π½Π΅ΠΉ ΡΠ°ΠΉΠ» CSS-ΡΡΠΈΠ»Π΅ΠΉ.
ΠΠ΅ΡΠ΅ΠΉΠ΄ΠΈΡΠ΅ Π½Π° Π³Π»Π°Π²Π½ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ http://localhost:8000/ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ ΡΠ°Π±ΠΎΡΡ API ΠΈ Axios β ΡΠ΅ΠΏΠ΅ΡΡ ΠΊΠ°ΡΡΠΎΡΠΊΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΠΈ Π·Π°ΠΌΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Ρ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π°:
Π€ΡΠΎΠ½ΡΠ΅Π½Π΄
ΠΠΎΠΌΠΈΠΌΠΎ API ΠΈ Axios Π² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π±Π΅Π· ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΡΠ°Π½ΠΈΡΡ ΡΡΠ°ΡΡΠ²ΡΠ΅Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Alpine.js. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Alpine.js ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ
ΠΎΠΆ Π½Π° Vue.js β Π½ΠΎ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Vue, Alpine Π½Π΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡΠ΅Ρ Ρ ΡΠ΅Π³Π°ΠΌΠΈ Django ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² ΡΠ΅Π³ΠΈ {% verbatim %} {% endverbatim %}
. ΠΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ Alpine ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ jQuery, ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΠΆΠ΅ ΠΎΠΊΡΠ΅ΡΡΠΈΠ»ΠΈ Β«ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ jQueryΒ».
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Alpine.js Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°ΡΠΎΡΠ° Django, ΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² Π½Π΅ΠΌ (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π²Π°Π½ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ JavaScript) Π½Π΅ ΡΠΎΡΡΠ°Π²ΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΡΠ΄Π°. ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Alpine.js Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅Π³ΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π½ΠΈΠΊΡΠ΄Π° ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ (ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ CORS).
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Alpine.js Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°ΡΠΎΡΠ° Django. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ Π² index.html, Π³Π΄Π΅ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅ ΠΌΠΈΡΠ½ΠΎ ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π·Π°ΠΏΡΠΎΡ Alpine ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π±ΡΠΊΠ΅Π½Π΄Π° Django:
Π ΠΊΠΎΠ½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² index.html ΠΈ detail.html Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Axios ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ Django Ninja API. ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Axios ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΎΡ Alpine Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ (title, description)
ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ API Π·Π°ΠΏΡΠΎΡ POST
:
ΠΠ»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Axios ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π±ΡΠΊΠ΅Π½Π΄Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ID β categoryId
:
ΠΠΎΠ΄Π²Π΅Π΄Π΅ΠΌ ΠΈΡΠΎΠ³ΠΈ
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Django Ninja ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Alpine.js ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅Π΄Π°Π²Π½ΠΎ, Π½ΠΎ ΡΠΆΠ΅ ΡΡΠΏΠ΅Π»ΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΡΠΎΡ ΡΡΠ΅Π΄ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²: ΡΠΊΠΎΡΠΎΡΡΡ, Π³ΠΈΠ±ΠΊΠΎΡΡΡ, ΠΏΡΠΎΡΡΠΎΡΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈ Π±Π΅ΡΡΠΎΠ²Π½Π°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π΄Π΅Π»Π°ΡΡ ΠΈΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ Π΄Π»Ρ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΡΡ Django-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΡΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Notes, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΠΏΡΠΎΡΡΠΎΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΠΈΠ·ΡΡΠΈΡΡ Π²ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Django Ninja ΠΈ Alpine.js, ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ API ΠΈ Axios, ΠΈ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΠ°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌ, ΡΡΠΎ Π²Π΅ΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ Notes ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ.
ΠΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΏΠΎ ΡΠ΅ΠΌΠ΅
- ππ Django Ρ Π½ΡΠ»Ρ. Π§Π°ΡΡΡ 1: ΠΏΠΈΡΠ΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ Π±Π»ΠΎΠ³ Π΄Π»Ρ ΠΊΠ»ΡΠ±Π° Π»ΡΠ±ΠΈΡΠ΅Π»Π΅ΠΉ Π·Π°Π΄Π°Ρ Python
- ππ Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅ΠΊΡΡΡΠΈΠ½Π³ΠΎΠ²ΡΠΉ ΠΏΠΎΡΡΠ°Π» Π½Π° Django: ΡΠ°ΡΡΡ 1
- π© ΠΠΎΠ»Π½ΡΠΉ ΡΡΠ»Π»ΡΡΠ΅ΠΊ: ΠΏΠΈΡΠ΅ΠΌ ΡΠ°ΠΉΡ Π½Π° Django, Vue ΠΈ GraphQL