π Django: ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ SEO ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
class MyModel(models.Model):
field1 = models.CharField(max_length=50)
field2 = models.IntegerField()
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ "MyModel", Π° ΠΏΠΎΠ»Ρ "field1" ΠΈ "field2". ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π³Π»Π°Π²Π½ΡΡ
Π±ΡΠΊΠ² Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
django ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ
Π Django, ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠ°ΠΊ, Π²Π°ΠΆΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ Π΄Π»Ρ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² Django.
1. ΠΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΡΡΡ ΡΡΡΠ½ΠΎΡΡΠΈ
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ - ΠΌΠΎΠ΄Π΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π½Π°Π·Π²Π°Π½Π° ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΡΡΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΡΡΠ½ΠΎΡΡΡ "ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ", ΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Π·ΡΠ²Π°ΡΡΡΡ "User". ΠΡΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π°.
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°
Π Django ΠΏΡΠΈΠ½ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠΈΡΠ»Π΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ "Users" ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ "User". ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΡΠ°Π½ΠΈΡΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΠΊΠΎΠ΄Π΅.
3. ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ²
ΠΡΠΈ Π½Π°Π·ΡΠ²Π°Π½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² Django, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΏΡΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ»ΠΎΠ². ΠΠΌΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΡΡΠΎΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· Π±ΡΠΊΠ², ΡΠΈΡΡ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ.
4. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ CamelCase Π΄Π»Ρ ΡΠΎΡΡΠ°Π²Π½ΡΡ ΡΠ»ΠΎΠ²
ΠΡΠ»ΠΈ ΠΈΠΌΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ»ΠΎΠ², ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, "BlogPost" ΠΈΠ»ΠΈ "UserProfile". ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΈΠΌΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ ΠΈ ΡΠ»ΡΡΡΠ°Π΅Ρ Π΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅.
5. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π΄Π»Ρ ΡΠ²ΡΠ·Π΅ΠΉ
ΠΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠ²ΡΠ·Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ "User" ΠΈΠΌΠ΅Π΅Ρ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΊΠ»ΡΡ Π½Π° ΠΌΠΎΠ΄Π΅Π»Ρ "Group", Π»ΡΡΡΠ΅ Π½Π°Π·Π²Π°ΡΡ ΡΡΠΎ ΠΏΠΎΠ»Π΅ "group" ΠΈΠ»ΠΈ "user_group", Π° Π½Π΅ ΠΏΡΠΎΡΡΠΎ "group_id". ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΈ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΡΠ΅Π½ΠΈΠ΅.
6. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠ² ΠΈΠ»ΠΈ ΡΡΡΡΠΈΠΊΡΠΎΠ²
Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ ΠΈΠ»ΠΈ ΡΡΡΡΠΈΠΊΡ ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π΄Π»Ρ Π»ΡΡΡΠ΅ΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°ΠΌΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΡΠ΅ΡΠΈΠΊΡ "Product" ΠΈΠ»ΠΈ ΡΡΡΡΠΈΠΊΡ "Model" ΠΊ ΠΈΡ ΠΈΠΌΠ΅Π½Π°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, "ProductCategory" ΠΈΠ»ΠΈ "CategoryModel". ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π»ΡΡΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ½ΡΠΌ.
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
class User(models.Model):
username = models.CharField(max_length=100)
email = models.EmailField()
class BlogPost(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π΄Π»Ρ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠΠΎΠ΄Π΅Π»Ρ "User" ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»Ρ "username" ΠΈ "email". ΠΠΎΠ΄Π΅Π»Ρ "BlogPost" ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π±Π»ΠΎΠ³ΠΎΠ²ΡΡ Π·Π°ΠΏΠΈΡΡ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ»Ρ "title", "content" ΠΈ ΡΠ²ΡΠ·Ρ "author" Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ "User".
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π½Π°Π·ΡΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² Django - ΡΡΠΎ Π²Π°ΠΆΠ½ΡΠΉ Π°ΡΠΏΠ΅ΠΊΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ, ΡΠ»ΡΡΡΠ°Π΅Ρ Π΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π»ΡΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π‘Π»Π΅Π΄ΡΡ Π²ΡΡΠ΅ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π² Π²Π°ΡΠΈΡ Django-ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ .