ΠΡΠΎΠ΅ΠΊΡ YaMDb ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΠΎΡΠ·ΡΠ²Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ. Π‘Π°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π² YaMDb Π½Π΅ Ρ ΡΠ°Π½ΡΡΡΡ, Π·Π΄Π΅ΡΡ Π½Π΅Π»ΡΠ·Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΈΠ»ΡΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»ΡΡΠ°ΡΡ ΠΌΡΠ·ΡΠΊΡ. ΠΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«ΠΠ½ΠΈΠ³ΠΈΒ», Β«Π€ΠΈΠ»ΡΠΌΡΒ», Β«ΠΡΠ·ΡΠΊΠ°Β». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Β«ΠΠ½ΠΈΠ³ΠΈΒ» ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ Β«ΠΠΈΠ½Π½ΠΈ-ΠΡΡ ΠΈ Π²ΡΠ΅-Π²ΡΠ΅-Π²ΡΠ΅Β» ΠΈ Β«ΠΠ°ΡΡΠΈΠ°Π½ΡΠΊΠΈΠ΅ Ρ ΡΠΎΠ½ΠΈΠΊΠΈΒ», Π° Π² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Β«ΠΡΠ·ΡΠΊΠ°Β» β ΠΏΠ΅ΡΠ½Ρ Β«ΠΠ°Π²Π΅ΡΠ°Β» Π³ΡΡΠΏΠΏΡ Β«ΠΡΠΊΠΈΒ» ΠΈ Π²ΡΠΎΡΠ°Ρ ΡΡΠΈΡΠ° ΠΠ°Ρ Π°. Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½.
ΠΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ ΠΆΠ°Π½Ρ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΏΡΠ΅Π΄ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«Π‘ΠΊΠ°Π·ΠΊΠ°Β», Β«Π ΠΎΠΊΒ» ΠΈΠ»ΠΈ Β«ΠΡΡΡ Π°ΡΡΒ»).
ΠΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ, ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΈ ΠΆΠ°Π½ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ½ΡΠ΅ ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΌΡΡΡΠ½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡΠΌ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΎΡΠ·ΡΠ²Ρ ΠΈ ΡΡΠ°Π²ΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΎΡΠ΅Π½ΠΊΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎ Π΄Π΅ΡΡΡΠΈ (ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ); ΠΈΠ· ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΎΡΠ΅Π½ΠΎΠΊ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΡΡΡΠ΅Π΄Π½ΡΠ½Π½Π°Ρ ΠΎΡΠ΅Π½ΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ β ΡΠ΅ΠΉΡΠΈΠ½Π³ (ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ). ΠΠ° ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΡΠ·ΡΠ². ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ ΠΎΡΠ·ΡΠ²Π°ΠΌ.
ΠΠΎΠ±Π°Π²Π»ΡΡΡ ΠΎΡΠ·ΡΠ²Ρ, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΡΡΠ°Π²ΠΈΡΡ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ.
- ΠΠ½ΠΎΠ½ΠΈΠΌ β ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΉ, ΡΠΈΡΠ°ΡΡ ΠΎΡΠ·ΡΠ²Ρ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
- ΠΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (user) β ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΡΠ°ΡΡ Π²ΡΡ, ΠΊΠ°ΠΊ ΠΈ ΠΠ½ΠΎΠ½ΠΈΠΌ, ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΠΎΡΠ·ΡΠ²Ρ ΠΈ ΡΡΠ°Π²ΠΈΡΡ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡΠΌ (ΡΠΈΠ»ΡΠΌΠ°ΠΌ/ΠΊΠ½ΠΈΠ³Π°ΠΌ/ΠΏΠ΅ΡΠ΅Π½ΠΊΠ°ΠΌ), ΠΌΠΎΠΆΠ΅Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ·ΡΠ²Ρ; ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΡΠ²ΠΎΠΈ ΠΎΡΠ·ΡΠ²Ρ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΎΡΠ΅Π½ΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΉ. ΠΡΠ° ΡΠΎΠ»Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π½ΠΎΠ²ΠΎΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
- ΠΠΎΠ΄Π΅ΡΠ°ΡΠΎΡ β ΡΠ΅ ΠΆΠ΅ ΠΏΡΠ°Π²Π°, ΡΡΠΎ ΠΈ Ρ ΠΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΠ»ΡΡ ΠΏΡΠ°Π²ΠΎ ΡΠ΄Π°Π»ΡΡΡ ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ ΠΎΡΠ·ΡΠ²Ρ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
- ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ (admin) β ΠΏΠΎΠ»Π½ΡΠ΅ ΠΏΡΠ°Π²Π° Π½Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡ, ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ ΠΈ ΠΆΠ°Π½ΡΡ. ΠΠΎΠΆΠ΅Ρ Π½Π°Π·Π½Π°ΡΠ°ΡΡ ΡΠΎΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ.
ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² Π½Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅:
git clone [email protected]:meteopavel/api_yamdb.git
cd yatube_api
CΠΎΠ·Π΄Π°ΡΡ ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅:
python3 -m venv venv
linux: source env/bin/activate
windows: source venv/Scripts/activate
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»Π° requirements.txt:
python3 -m pip install --upgrade pip
pip install -r requirements.txt
ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ:
python3 manage.py migrate
ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΏΡΠ΅Π΄ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ :
python manage.py csv_to_db
ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠΎΡΡΠ° Π΄Π°Π½Π½ΡΡ ΠΈΠ· csv-ΡΠ°ΠΉΠ»Π° Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΡΠ²ΠΈΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅:
$ ΠΠ°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° _Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΠΌΠΎΠ΄Π΅Π»ΠΈ_ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ.
ΠΠ°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡ:
python manage.py runserver
ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ ReDoc ΠΏΡΠΎΠΉΡΠΈ ΠΏΠΎ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΡ /redoc/
ΠΠ»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ POST-Π·Π°ΠΏΡΠΎΡ ΠΏΠΎ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΡ /api/v1/auth/signup/ Π Π·Π°ΠΏΡΠΎΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
{
"email": "[email protected]",
"username": "string"
}
ΠΠΎΠ΄ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½Π° Π±ΡΠ΄Π΅Ρ Π²ΡΡΠ»Π°Π½ Π½Π° ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ e-mail. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½Π° ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ POST-Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΠ½Π΄ΠΏΠΎΠΈΠ½Ρ /api/v1/auth/token/ Π Π·Π°ΠΏΡΠΎΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
{
"username": "string",
"confirmation_code": "string"
}
ΠΡΠΈΠΌΠ΅Ρ ΠΎΡΠ²Π΅ΡΠ°:
{
"count": 0,
"next": "string",
"previous": "string",
"results": [
{
"id": 0,
"name": "string",
"year": 0,
"rating": 0,
"description": "string",
"genre": [
{
"name": "string",
"slug": "string"
}
],
"category": {
"name": "string",
"slug": "string"
}
}
]
}
{
"name": "string",
"year": 0,
"description": "string",
"genre": [
"string"
],
"category": "string"
}
ΠΡΠΈΠΌΠ΅Ρ ΠΎΡΠ²Π΅ΡΠ°:
{
"id": 0,
"name": "string",
"year": 0,
"rating": 0,
"description": "string",
"genre": [
{
"name": "string",
"slug": "string"
}
],
"category": {
"name": "string",
"slug": "string"
}
}
{
"name": "string",
"slug": "string"
}
ΠΡΠΈΠΌΠ΅Ρ ΠΎΡΠ²Π΅ΡΠ°:
{
"name": "string",
"slug": "string"
}
- Python 3.9.10
- Django 3.2.16
- djangorestframework 3.12.4
- pytest 6.2.4
- PyJWT 2.1.0
ΠΠ»ΡΠ±ΠΈΠ½Π° ΠΠΈΡΠ°Π½ΠΎΠ²Π°
Π Π°Π·ΡΠ°Π±ΠΎΡΠ°Π»Π° Π²ΡΡ ΡΠ°ΡΡΡ, ΠΊΠ°ΡΠ°ΡΡΡΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ:
- ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ,
- ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ°,
- ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ,
- ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· e-mail.
ΠΠΏΠΈΡΠ°Π» ΠΌΠΎΠ΄Π΅Π»ΠΈ, view ΠΈ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΡ Π΄Π»Ρ:
- ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΉ,
- ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ,
- ΠΆΠ°Π½ΡΠΎΠ².
Π ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π» ΠΈΠΌΠΏΠΎΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· csv-ΡΠ°ΠΉΠ»Π°.
ΠΠΏΠΈΡΠ°Π» ΠΌΠΎΠ΄Π΅Π»ΠΈ, view ΠΈ ΡΠ½Π΄ΠΏΠΎΠΈΠ½ΡΡ Π΄Π»Ρ:
- ΠΎΡΠ·ΡΠ²ΠΎΠ²,
- ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π²,
- ΡΠ΅ΠΉΡΠΈΠ½Π³Π° ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠΉ.