Language: Π ΡΡΡΠΊΠΈΠΉ, English π
- βοΈ ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°
- π± Π’Π΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°
- π ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
- π Π‘Π²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ
- π½οΈ ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ
- π§ ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°
- π Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π·Π°ΠΏΡΡΠΊ
- π ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ API
- π ΠΠΈΡΠ΅Π½Π·ΠΈΡ
- π§ββοΈ ΠΠ²ΡΠΎΡΡ
ΠΡΠΎΠ΅ΠΊΡ Π½Π° Django Rest Framework, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ "ΠΠ½Π»Π°ΠΉΠ½ ΠΠ°Π³Π°Π·ΠΈΠ½Π°":
ΠΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Π΅ΠΌ, ΠΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ / ΠΠ΄ΠΌΠΈΠ½ΠΎΠΌ, ΠΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠΌ ΠΈ ΠΡΡΡΠ΅ΡΠΎΠΌ.
ΠΡΠΎΠ΅ΠΊΡ Π±ΡΠ» ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Ρ ΡΠ΅Π»ΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Django Rest Framework.
ΠΡΠ»ΠΈ ΠΈΠ·ΡΡΠ΅Π½Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΠΌΡ, ΠΊΠ°ΠΊ:
- ΠΠ°ΡΡΠ΅ΡΠ½Ρ MVC, MVP. β
- ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ JWT. β
- ΠΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ sessions. β
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ. β
- Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΏΠΎ SMTP-ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Ρ. β
- Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ, Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Djoser. β
- ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠ½ΠΎΠ²ΡΡ Π·Π°Π΄Π°Ρ. β
- ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΡΡΠ°. β
- Π Π°Π±ΠΎΡΠ° Π±ΡΠΎΠΊΠ΅ΡΠΎΠ² ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ (Redis, RabbitMQ, Kafka). β
- Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ RabbitMQ ΠΈ Kafka, ΠΏΠ»ΡΡΡ ΠΈ ΠΌΠΈΠ½ΡΡΡ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. β
- Π Π°Π±ΠΎΡΠ° Ρ ΠΏΠ»Π°ΡΠ΅ΠΆΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Yookassa. β
- ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ webhook-Π°. β
ΠΡΠΈΠΌΠ΅ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΠ΅ΠΊ ΠΈ ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ.
- Π‘Ρ
Π΅ΠΌΠ° -
Spectacular. - Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ -
SMTP. - ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ -
Djoser. - ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ -
Sentry. - ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π°Π΄ΡΠ΅ΡΠ° ΡΠ΅ΡΠ΅Π· -
Google Maps. (Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅) - Π Π΅Π·Π΅ΡΠ²Π½Π°Ρ ΠΊΠΎΠΏΠΈΡ ΠΠ°Π·Ρ ΠΠ°Π½Π½ΡΡ
-
CeleryBeat. - ΠΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΠ°Π·Π° ΠΠ°Π½Π½ΡΡ
-
Redis. - Π€ΠΎΠ½ΠΎΠ²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ -
Celery. - ΠΡΠΎΠΊΠ΅Ρ ΠΎΡΠ΅ΡΠ΅Π΄Π΅ΠΉ -
RabbitMQ. - ΠΠ»Π°ΡΠ΅ΠΆΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° -
Yookassa. - ΠΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°ΡΠ΅ΠΆΠ° -
Webhook.
Python 3.11Django 4.2.7djangorestframework 3.14.0djangorestframework-simplejwt 5.3.0drf-spectacular 0.26.5djoser 2.2.2psycopg2 2.9.9redis 5.0.1rabbitmq-server 0.0.1celery 5.3.6django-celery-beat 2.5.0sentry-sdk 1.38.0yookassa 3.0.1
- ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΠ°Π·Ρ ΠΠ°Π½Π½ΡΡ
. Π‘ΠΊΠ°ΡΠ°ΡΡ Π²ΠΈΠ΄Π΅ΠΎ Π² Π»ΡΡΡΠ΅ΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅.

- ΠΡΠΈΠΌΠ΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ Π·Π°ΠΊΠ°Π·Π° ΠΈ Π΅Π³ΠΎ ΠΎΠΏΠ»Π°ΡΠ° Π² Yookassa. Π‘ΠΊΠ°ΡΠ°ΡΡ Π²ΠΈΠ΄Π΅ΠΎ Π² Π»ΡΡΡΠ΅ΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅.

Warning
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΏΠ°ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΉ Π½ΠΈΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΏΠΎΠΌΠΎΡΡ!
- ΠΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°. ΠΡΠ° ΡΡΡΠ»ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ.
- Π£ Π²Π°Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π² Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΈ Π²Ρ ΠΎΠ΄Π΅ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ. ΠΡΠ° ΡΡΡΠ»ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ.
-
ΠΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π°ΡΠΈΠ½Π°Π» ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ Π±Π΅Π· Π·Π½Π°Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ REST API ΠΈ
ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΠ°ΠΌ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΌΠ°Π³Π°Π·ΠΈΠ½. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π½Π΅Π΄ΠΎΡΠ΅ΡΡ. -
ΠΠΎΡΠ΅ΠΌΡ Π² ΡΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π½Π΅Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ²? ΠΡΠΎ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ Π½Π° ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ ΡΠ»ΡΡΠ°Π», Π½ΠΎ ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π».
ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ ΡΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ΅ΡΠ²ΠΈΡ. -
Π’Π°ΠΊ ΠΆΠ΅, Π΅ΡΠ»ΠΈ Π²Ρ Π±ΡΠ΄Π΅ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ΅ΡΠ΅Π· docker, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ, Π΄ΠΎΠ΄Π΅Π»Π°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ
celery(ΠΎΡΠΊΠ°ΡΠΈΡΡ Π½Π° Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΡΡ Π²Π΅ΡΡΠΈΡ) Π»ΠΈΠ±ΠΎ Π² rabbitmq Π΄ΠΎΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³. ΠΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ
ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ ΠΏΡΠΈΡΠΈΠ½ Π² docker Π½Π΅ Ρ ΠΎΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ celery ΠΈ Π²ΡΡΠΊΠ°ΠΊΠΈΠ²Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π² rabbitmq. -
ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
ΠΡΠ»ΠΈ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π²Π°Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π°ΠΏΡΡΠΊΠ°Π»ΡΡ Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ Run (Shift+F10) ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ»ΡΡ Debug (Shift+F9) Π·Π°ΠΉΠ΄ΠΈΡΠ΅ ΠΏΠΎ ΡΡΠΎΠΉ ΡΡΡΠ»ΠΊΠ΅
Warning
ΠΡΠ»ΠΈ Π½Π° Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅ Π΅ΡΡΡ Π²ΡΡ Π½ΠΈΠΆΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ΅, ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅.
- ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ:
git clone https://github.com/AntonVagabond/online_store.git
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ:
python3.11 -m venv env
source env/bin/activate
pip install -r requirements.txt
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅
.envΠ½Π° ΠΎΡΠ½ΠΎΠ²Π΅.env.example
SECRET_KEY=
DEBUG=
ALLOWED_HOSTS=
PG_DATABASE=
PG_USER=
PG_PASSWORD=
DB_HOST=
DB_PORT=
SENTRY_DSN=
EMAIL_HOST=
EMAIL_PORT=
EMAIL_HOST_USER=
EMAIL_HOST_PASSWORD=
EMAIL_USE_TLS=
REDIS_HOST=
REDIS_PORT=
RABBIT_HOST=
RABBIT_PORT=
CELERY_TASK_TRACK_STARTED=
ACCEPT_CONTENT=
RESULT_SERIALIZER=
TASK_SERIALIZER=
TIMEZONE=
YOOKASSA_SHOP_ID=
YOOKASSA_SECRET_KEY=
YOOKASSA_RETURN_URL=
STATIC_FILES=/path/to/static/
MEDIA_FILES=/path/to/media/- ΠΠΈΠ»Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
docker-compose up -d --build
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ:
docker exec web python manage.py makemigrations
- ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ:
docker exec web python manage.py migrate
- ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
docker-compose exec make initial
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ superuser-Π°:
docker-compose exec web python manage.py createsuperuser
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ API Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎ /api/v1.
ΠΡΠ°ΡΠΊΠΈΠΉ ΠΏΠΎΠΊΠ°Π· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:

ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠΌ. Π² ΡΠ°ΠΉΠ»Π΅ LICENSE.
