ИзданиС Π½Π° web-Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Django 3.0

Π‘Π΅ ΡΡŠΡΡ‚ΠΎΡ Ρ€Π΅Π»ΠΈΠ· Π½Π° ΡƒΠ΅Π±-Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠ° Django 3.0, написан Π½Π° Python ΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΡƒΠ΅Π± прилоТСния. ΠšΠ»ΠΎΠ½ΡŠΡ‚ Django 3.0 ΠΏΠΎΠΏΠ°Π΄Π° Π² катСгорията Π½Π° изданията с Π½ΠΎΡ€ΠΌΠ°Π»Π΅Π½ срок Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° ΠΈ Ρ‰Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ бъдС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π΄ΠΎ Π°ΠΏΡ€ΠΈΠ» 2021 Π³ΠΎΠ΄ΠΈΠ½Π°. Π›Π’Π‘ ΠΊΠ»ΠΎΠ½ΡŠΡ‚ 2.22 Ρ‰Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Π΄ΠΎ Π°ΠΏΡ€ΠΈΠ» 2022 Π³ΠΎΠ΄ΠΈΠ½Π°, Π° ΠΊΠ»ΠΎΠ½ΡŠΡ‚ 1.11 Π΄ΠΎ Π°ΠΏΡ€ΠΈΠ» 2020 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° ΠΊΠ»ΠΎΠ½ 2.1 Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Π½Π°.

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΈ подобрСния:

  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π² асинхронСн Ρ€Π΅ΠΆΠΈΠΌ с изпълнСниС ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ASGI ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈΡΡ‚ интСрфСйс ASGI (Asynchronous Server Gateway Interface) Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΊΠ°Ρ‚ΠΎ замСститСл Π½Π° WSGI, със Π·Π° Ρ†Π΅Π» Π΄Π° осигури взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ, Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠΎΠ²Π΅ ΠΈ прилоТСния, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π° Π² асинхронСн Ρ€Π΅ΠΆΠΈΠΌ. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° стартиранС Ρ‡Ρ€Π΅Π· WSGI остава, Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡΡ‚ с асинхронния Ρ€Π΅ΠΆΠΈΠΌ ΠΊΠΎΠ΄ сС Π²ΠΊΠ»ΡŽΡ‡Π²Π° само ΠΏΡ€ΠΈ стартиранС Π² срСди, Π±Π°Π·ΠΈΡ€Π°Π½ΠΈ Π½Π° ASGI.

    Π—Π° асинхронния Ρ€Π΅ΠΆΠΈΠΌ Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Ρ†ΠΈΠΊΡŠΠ» Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ (event loop), Π² ΠΊΠΎΠΉΡ‚ΠΎ Π½Π΅ сС допуска ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄, ΠΎΠ·Π½Π°Ρ‡Π΅Π½ ΠΊΠ°Ρ‚ΠΎ 'async unsafe'. Към Ρ‚Π°ΠΊΡŠΠ² ΠΊΠΎΠ΄ спадат Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ (ORM), ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² асинхронСн контСкст (Π² Ρ‚ΠΎΠ·ΠΈ случай Ρ‰Π΅ сС ΠΏΠΎΠΊΠ°Π·Π²Π° Π³Ρ€Π΅ΡˆΠΊΠ° SynchronousOnlyOperation) ΠΈ слСдва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Π΅Π½ΠΈ Π² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ синхронСн ΠΏΠΎΡ‚ΠΎΠΊ.

  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са спСциализирани ΠΈΠ·Π±ΠΈΡ€Π°Π΅ΠΌΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ TextChoices, IntegerChoices ΠΈ Choices, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° опрСдСлянС Π½Π° тСкстови ΠΈ цСлочислСни ΠΏΠΎΠ»Π΅Ρ‚Π° Π² ΠΌΠΎΠ΄Π΅Π»Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ нСобходимост Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² ΠΏΠΎΠ»Π΅Ρ‚Π° Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ Ρ‡Π΅Ρ‚ΠΈΠΌΠΈ обозначСния, ΠΏΡ€Π΅Π²Π΅ΠΆΠ΄Π°Π½ΠΈ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΡ€ΠΈΠ·Π½Π°Ρ†ΠΈ:

    class YearInSchool(models.TextChoices):
    FRESHMAN = 'FR', _('Freshman')
    SOPHOMORE = 'SO', _('Sophomore')
    JUNIOR = 'JR', _('Junior')
    SENIOR = 'SR', _('Senior')
    GRADUATE = 'GR', _('Graduate')

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ·Ρ€Π°Π·ΠΈ, ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Ρ‰ΠΈ BooleanField, Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ във Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° QuerySet Π±Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ Π°Π½Π½ΠΎΡ‚ΠΈΡ€Π°Π½Π΅, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ.
  • ΠžΡΠΈΠ³ΡƒΡ€Π΅Π½Π° Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ MariaDB 10.1 ΠΈ ΠΏΠΎ-Π½ΠΎΠ²ΠΈ вСрсии.
  • Π—Π° PostgreSQL Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ клас ExclusionConstraint Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ограничСния Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΈΠ·Ρ€Π°Π·ΠΈ EXCLUDE;
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Python 3.5 Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Π½Π°.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster