πŸŒŸΠŸΡ€ΠΎΠ΅ΠΊΡ‚ learning_log

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΈΠΌΠ΅Π½Π΅ΠΌ learning_log, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² этот ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈ создайтС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ срСду ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ:

  • python β€” Windows

  • python3 β€” macOS, Linux

python3 -m venv ll_env

Команда запускаСт ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ срСды venv ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ для создания Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ срСды с ΠΈΠΌΠ΅Π½Π΅ΠΌ ll_env (ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π² ΠΈΠΌΠ΅Π½ΠΈ ll_env Π΄Π²Π΅ Π±ΡƒΠΊΠ²Ρ‹ l, Π° Π½Π΅ ΠΎΠ΄Π½Π°).

Активизация Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ срСды

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ срСда Π±ΡƒΠ΄Π΅Ρ‚ создана, Π΅Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

source ll_env/bin/activate

Команда запускаСт сцСнарий activate ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ll_env/bin. Когда срСда активизируСтся, Π΅Π΅ имя выводится Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² срСдС ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΈ установлСны Ρ€Π°Π½Π΅Π΅(глобально).

ΠŸΠ°ΠΊΠ΅Ρ‚Ρ‹, установлСнныС Π² ll_env, Π±ΡƒΠ΄ΡƒΡ‚ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎ врСмя, ΠΏΠΎΠΊΠ° срСда остаСтся Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ активация окруТСния
circle-exclamation

Установка Django

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²Ρ‹ создали свою Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ срСду ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π΅Π΅, установитС Django:

Установка Django

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Django

НС выходя ΠΈΠ· Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ срСды (ΠΏΠΎΠΊΠ° ll_env выводится Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках), Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для создания Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ автоматичСской Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ структуры / ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… скриптов:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, просмотр структуры

Команда Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 1 ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Django ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΈΠΌΠ΅Π½Π΅ΠΌ learning_log. Π’ΠΎΡ‡ΠΊΠ° Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ со структурой ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², которая ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π½ΠΈΠ΅ прилоТСния Π½Π° сСрвСрС послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

triangle-exclamation

Команда ls (dir Π² Windows) Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 2 ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Django создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΈΠΌΠ΅Π½Π΅ΠΌ learning_log. Π’Π°ΠΊΠΆΠ΅ создаСтся Ρ„Π°ΠΉΠ» manage.py β€” короткая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ части Django для выполнСния. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ эти ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для управлСния Ρ‚Π°ΠΊΠΈΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π° с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ запуск сСрвСров.

Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ learning_log находятся 5 Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 3, ваТнСйшими ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„Π°ΠΉΠ»Ρ‹ settings.py, urls.py.

Π€Π°ΠΉΠ» settings.py опрСдСляСт Ρ‚ΠΎ, ΠΊΠ°ΠΊ Django взаимодСйствуСт с вашСй систСмой ΠΈ управляСт вашим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ. ΠœΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… настроСк ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ нСсколько Π½ΠΎΠ²Ρ‹Ρ… настроСк Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π€Π°ΠΉΠ» urls.py сообщаСт Django, ΠΊΠ°ΠΊΠΈΠ΅ страницы слСдуСт ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° запросы Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π’Π°ΠΊ ΠΊΠ°ΠΊ Django Ρ…Ρ€Π°Π½ΠΈΡ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, относящСйся ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ, Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ этапС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Django смоТСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ (всС Π΅Ρ‰Π΅ Π½Π΅ покидая Π°ΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ срСду):

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… SQLite

КаТдоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… называСтся ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠ΅ΠΈΜ†.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ migrate ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Django ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… соотвСтствуСт Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Когда ΠΌΡ‹ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ выполняСм эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ с использованиСм SQLite, Django создаСт Π½ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π·Π° нас.

На ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 1 Django сообщаСт ΠΎ создании ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΈΜ† для выполнСния административных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΜ† ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ls ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Django создаСт Ρ„Π°ΠΈΜ†Π» с ΠΈΠΌΠ΅Π½Π΅ΠΌ db.sqlite3

На ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 2. SQLite β€” Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ с ΠΎΠ΄Π½ΠΈΠΌ Ρ„Π°ΠΈΜ†Π»ΠΎΠΌ; ΠΎΠ½Π° идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для написания простых ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈΜ†.

circle-info

Π’ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ срСдС для выполнСния ΠΊΠΎΠΌΠ°Π½Π΄ manage.py ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° python, Π΄Π°ΠΆΠ΅ Ссли для запуска Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, python3). Π’ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ срСдС ΠΊΠΎΠΌΠ°Π½Π΄Π° python относится ΠΊ вСрсии Python, создавшСй Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ срСду.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

УбСдимся Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» создан ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ runserver для просмотра Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

Django запускаСт сСрвСр, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ сСрвСром Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² своСй систСмС ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Когда Π²Ρ‹ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚Π΅ страницу, вводя URL Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, сСрвСр Django ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π½Π° запрос, для этого ΠΎΠ½ строит ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ страницу ΠΈ отправляСт страницу Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ.

Django провСряСт ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ созданного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

На ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 2 возвращаСтся URL-адрСс, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ доступСн ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

URL http://127.0.0.1:8000/arrow-up-right ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π²Π΅Π΄Π΅Ρ‚ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΈΠ²Π°Π½ΠΈΠ΅ запросов Π½Π° ΠΏΠΎΡ€Ρ‚Π΅ 8000 локального хоста (localhost), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ вашСго ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

Π’Π΅Ρ€ΠΌΠΈΠ½ΠΎΠΌ Β«Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΈΜ† хост» обозначаСтся сСрвСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΈΜ† ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ запросы Π²Π°ΡˆΠ΅ΠΈΜ† систСмы; ΠΎΠ½ Π½Π΅ позволяСт Π½ΠΈΠΊΠΎΠΌΡƒ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ страницы.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΊΡ€ΠΎΠΈΜ†Ρ‚Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ URL http://localhost:8000/arrow-up-right β€” ΠΈΠ»ΠΈ http://127.0.0.1:8000/arrow-up-right, Ссли ΠΏΠ΅Ρ€Π²Ρ‹ΠΈΜ† адрСс Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ страницу, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ создаСт Django, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Π²Π°ΠΌ, Ρ‡Ρ‚ΠΎ всС ΠΏΠΎΠΊΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Пока Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΠΈΜ†Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ сСрвСра (Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π΅Π΅, это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ΠΌ клавиш Ctrl+C Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° runserver).

Начало Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Django прСдставляСт собой Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, совмСстная Ρ€Π°Π±ΠΎΡ‚Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… обСспСчиваСт Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Ρ†Π΅Π»ΠΎΠΌ. Пока ΠΌΡ‹ создадим ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² нашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Π”Ρ€ΡƒΠ³ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для управлСния ΡƒΡ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ записями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅

ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² ΡƒΠ΄ΠΎΠ±Π½ΡƒΡŽ для Вас IDE, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ PyCharm

File β€” Open β€” learning_log (Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ)

PyCharm ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ venv ΠΈ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ настройки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π°.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² PyCharm

Π”Π°Π»Π΅Π΅ запуститС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Запуск ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² PyCharm

ΠŸΡ€ΠΈ запускС Вас пСрСнСсСт Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ "Run" Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ состояниС сСрвСра.

Для удобства дальнСйшСго управлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ "Terminal"

ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΡƒ Terminal

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прилоТСния

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ startapp:

Команда startapp имя_прилоТСния ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Django ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ инфраструктуру, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ для построСния прилоТСния.

Заглянув сСйчас Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π²Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π² Π½Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΈΠΌΠ΅Π½Π΅ΠΌ learning_logs. На ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 1

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ этот ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ Π±Ρ‹Π»ΠΈ созданы Django. На ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ΄ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 2

Π‘Π°ΠΌΡ‹Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π² этом ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ β€” models.py, admin.py ΠΈ views.py.

Π€Π°ΠΉΠ» models.py Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для опрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π² нашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

К Ρ„Π°ΠΉΠ»Π°ΠΌ admin.py ΠΈ views.py ΠΌΡ‹ вСрнСмся ΠΏΠΎΠ·Π΄Π½Π΅Π΅.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ΄ΡƒΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π°ΠΌ понадобятся. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ создаСт Π½Π°Π±ΠΎΡ€ Ρ‚Π΅ΠΌ Π² своСм ΠΆΡƒΡ€Π½Π°Π»Π΅. КаТдая запись, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ сдСлаСт, Π±ΡƒΠ΄Π΅Ρ‚ привязана ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅, Π° записи Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² тСкстовом Π²ΠΈΠ΄Π΅. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΠ΅Ρ‚ΠΊΡƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ записи, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π½Π°Π», ΠΊΠΎΠ³Π΄Π° эта запись Π±Ρ‹Π»Π° создана.

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» models.py ΠΈ просмотритС Π΅Π³ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ содСрТимоС:

ΠœΠΎΠ΄ΡƒΠ»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ models импортируСтся автоматичСски, ΠΈ Π½Π°ΠΌ прСдлагаСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свои ΠΌΠΎΠ΄Π΅Π»ΠΈ.

МодСль сообщаСт Django, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΊΠΎΠ΄Π° модСль прСдставляСт собой ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ класс, ΠΎΠ½Π° содСрТит Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠ°ΠΊ ΠΈ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ классы.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит модСль Ρ‚Π΅ΠΌ обсуТдСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ:

ΠœΡ‹ создали класс с ΠΈΠΌΠ΅Π½Π΅ΠΌ Topic, Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ Model β€” Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π² Django ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π±Π°Π·ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ΄Π΅Π»ΠΈ.

Π’ класс Topic Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π΄Π²Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°: text ΠΈ date_added.

Атрибут text содСрТит Π΄Π°Π½Π½Ρ‹Π΅ CharField β€” Π±Π»ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ…, состоящий ΠΈΠ· символов, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ тСкст.

Атрибуты CharField ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для хранСния Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… объСмов тСкста: ΠΈΠΌΠ΅Π½, Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ², Π½Π°Π·Π²Π°Π½ΠΈΠΈΜ† Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² ΠΈ Ρ‚. Π΄.

ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° CharField Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Django, сколько мСста Π½ΡƒΠΆΠ½ΠΎ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для Π½Π΅Π³ΠΎ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС задаСтся максимальная Π΄Π»ΠΈΠ½Π° max_length, равная 200 символам; этого Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ достаточно для хранСния Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΈΠΌΠ΅Π½ Ρ‚Π΅ΠΌ.

Атрибут date_added содСрТит Π΄Π°Π½Π½Ρ‹Π΅ DateTimeField β€” Π±Π»ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ… для хранСния Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

АргумСнт auto_add_now=True ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Django автоматичСски ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ этому Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄Π°Ρ‚Ρƒ ΠΈ врСмя ΠΊΠ°ΠΆΠ΄Ρ‹ΠΈΜ† Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ создаСт Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ.

circle-info

ΠŸΠΎΠ»Π½Ρ‹ΠΉ список всСх ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ Django Model Field Reference https://docs.djangoproject.com/en/4.2/ref/models/fields/arrow-up-right

НСобходимо ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Django, ΠΊΠ°ΠΊΠΎΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚Π΅ΠΌΠ΅.

Django Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ str() для Π²Ρ‹Π²ΠΎΠ΄Π° простого прСдставлСния ΠΌΠΎΠ΄Π΅Π»ΠΈ.

ΠœΡ‹ написали Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ str(), которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, Ρ…Ρ€Π°Π½ΡΡ‰ΡƒΡŽΡΡ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ text.

Активизация ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Django Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» settings.py (ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° learning_log/learning_log) ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π² Π½Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сообщаСт Django, ΠΊΠ°ΠΊΠΈΠ΅ прилоТСния установлСны Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅:

Настройки Ρ„Π°ΠΉΠ»Π° settings.py

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ нашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² этот список.

Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ содСрТимоС INSTALLED_APPS, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ΠΎ выглядСло Ρ‚Π°ΠΊ:

Π“Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠΈ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ растСт, Π° количСство ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ увСличиваСтся. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ создаСм Ρ€Π°Π·Π΄Π΅Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΊΠ° содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ learning_logs.

triangle-exclamation

Π—Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Django ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, относящСйся ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ Topic. Π’ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ ΠΎΠΊΠ½Π΅ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

По ΠΊΠΎΠΌΠ°Π½Π΄Π΅ makemigrations Django опрСдСляСт, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, связанной с Π½ΠΎΠ²Ρ‹ΠΌΠΈ модСлями.

Из Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Django создаСт Ρ„Π°ΠΉΠ» ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ с ΠΈΠΌΠ΅Π½Π΅ΠΌ 0001_initial.py. Π­Ρ‚Π° миграция создаСт Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для ΠΌΠΎΠ΄Π΅Π»ΠΈ Topic.

makemigrations

МоТно ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ этот Ρ„Π°ΠΉΠ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ выглядит миграция.

0001_initial.py

Рассмотрим ΠΊΠΎΠ΄ SQL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… для создания Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ для нашСй ΠΌΠΎΠ΄Π΅Π»ΠΈ. Команда sqlmigrate ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ… SQL Π±Π΅Π· запуска. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…:

sqlmigrate

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ для автоматичСского измСнСния Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…:

migrate

Π‘ΠΎΠ»ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π° этой ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ совпадаСт с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ migrate.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ слСдуСт Π½Π° строку Applying learning_logs.0001_initial... OK β€” здСсь Django ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ для learning_logs ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ управляСт Learning Log, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ эти Ρ‚Ρ€ΠΈ дСйствия:

  • внСситС измСнСния Π² models.py

  • Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ makemigrations для learning_logs

  • ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Django Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (migrate).

Административный сайт Django

Django позволяСт Π»Π΅Π³ΠΊΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с модСлями, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ для прилоТСния, Ρ‡Π΅Ρ€Π΅Π· административный сайт. Π­Ρ‚ΠΎΡ‚ сайт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ администраторами сайта, Π° Π½Π΅ рядовыми ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ создадим административный сайт ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Π³ΠΎ для добавлСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‚Π΅ΠΌ Ρ‡Π΅Ρ€Π΅Π· модСль Topic.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Django позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ Π½Π° сайтС, Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ называСтся ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

ΠŸΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ дСйствиями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. На самом ТСстком ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π° сайтС. ЗарСгистрированным ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прСдоставляСтся привилСгия чтСния своих ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ·Π±Ρ€Π°Π½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, доступной Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для участников сообщСства.

Для эффСктивного администрирования Π²Π΅Π±-прилоТСния Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρƒ сайта ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ доступна вся информация, хранящаяся Π½Π° сайтС.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π² Django, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΡŒΡ‚Π΅ Π½Π° запросы:

createsuperuser

ΠŸΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ createsuperuser Django ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ввСсти имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π²Π²ΠΎΠ΄ΠΈΠΌ имя admin, Π½ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ввСсти любоС имя Π½Π° своС усмотрСниС.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ввСсти адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ ΠΈΠ»ΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ это ΠΏΠΎΠ»Π΅ пустым.

ПослС этого слСдуСт Π΄Π²Π°ΠΆΠ΄Ρ‹ ввСсти ΠΏΠ°Ρ€ΠΎΠ»ΡŒ.

Если ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ простым Django ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΠΈΡ‚ ΠΎΠ± этом ΠΈ запросит ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅.

circle-info

Π§Π°ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скрыта ΠΎΡ‚ администраторов сайта. НапримСр, Django Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ сохраняСт Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, вмСсто этого сохраняСтся Ρ…Π΅Ρˆ β€” ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ строка, построСнная Π½Π° основС пароля. И ΠΊΠΎΠ³Π΄Π° Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π²Ρ‹ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Django снова Ρ…Π΅ΡˆΠΈΡ€ΡƒΠ΅Ρ‚ Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ сравниваСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ с Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹ΠΌ Ρ…Π΅ΡˆΠ΅ΠΌ. Если Π΄Π²Π° Ρ…Π΅ΡˆΠ° ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π°. Если ΠΆΠ΅ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π°Ρ‚Π°ΠΊΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ доступ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… сайта, Ρ‚ΠΎ ΠΎΠ½ смоТСт ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ хранящийся Π² Π±Π°Π·Π΅ Ρ…Π΅Ρˆ, Π½ΠΎ Π½Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ. ΠŸΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ настройкС сайта Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ исходныС ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΠΈΠ· Ρ…Π΅ΡˆΠ΅ΠΉ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

РСгистрация ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° административном сайтС

Django добавляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, User ΠΈ Group) Π½Π° административный сайт автоматичСски, Π½ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ создали, придСтся Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.

ΠŸΡ€ΠΈ запускС прилоТСния learning_logs Django создаСт Ρ„Π°ΠΈΜ†Π» admin.py Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с models.py. ΠžΡ‚ΠΊΡ€ΠΎΠΈΜ†Ρ‚Π΅ Ρ„Π°ΠΈΜ†Π» admin.py:

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Topic Π½Π° административном сайтС, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ модСль Topic.

Π’ΠΎΡ‡ΠΊΠ° ΠΏΠ΅Ρ€Π΅Π΄ models сообщаСт Django, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» models.py слСдуСт ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с admin.py.

Π’Ρ‹Π·ΠΎΠ² admin.site.register() сообщаСт Django, Ρ‡Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ модСлью Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· административный сайт.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для Π²Ρ…ΠΎΠ΄Π° Π½Π° административный сайт.

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ адрСс http://localhost:8000/admin/arrow-up-right, Π·Π°Ρ‚Π΅ΠΌ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ для Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданного ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

На этой страницС ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π½ΠΎΡΠΈΡ‚ΡŒ измСнСния Π² ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ настройки.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, связанными с Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ модСлью Topic.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΌ

Когда модСль Topic Π±Ρ‹Π»Π° зарСгистрирована Π½Π° административном сайтС, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠ΅Ρ€Π²ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ.

Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ссылкС Topics, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΈΜ†Ρ‚ΠΈ ΠΊ страницС Topics

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° практичСски пуста, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΅Ρ‰Π΅ Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΈΜ† Ρ‚Π΅ΠΌΡ‹ для выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΜ†. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ссылкС Add Topic, открываСтся Ρ„ΠΎΡ€ΠΌΠ° для добавлСния Π½ΠΎΠ²ΠΎΠΈΜ† Ρ‚Π΅ΠΌΡ‹.

Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΠΎΠ»Π΅ тСкст Chess ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ссылкС Save.

Π’Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚Π΅ΡΡŒ ΠΊ административной страницС Topics, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΈΜ† появляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданная Ρ‚Π΅ΠΌΠ°.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ вас Π±Ρ‹Π»ΠΎ большС Π΄Π°Π½Π½Ρ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π‘Π½ΠΎΠ²Π° Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ссылкС Add Topic ΠΈ создайтС Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ Rock Climbing. Бсылка Save снова Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ вас ΠΊ основной страницС Topics, Π³Π΄Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΎΠ±Π΅ Ρ‚Π΅ΠΌΡ‹, Chess ΠΈ Rock Climbing.

Add Topics

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Entry

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ ΠΏΠΎ этим Π΄Π²ΡƒΠΌ Ρ‚Π΅ΠΌΠ°ΠΌ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ модСль для записСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄Π΅Π»Π°Π΅Ρ‚ Π² своих ΠΆΡƒΡ€Π½Π°Π»Π°Ρ….

КаТдая запись Π΄ΠΎΠ»ΠΆΠ½Π° Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠΎΠΉ.

Π’Π°ΠΊΠΎΠ΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ называСтся ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ Β«ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒΒ», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ записи ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ связаны с ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠΎΠΉ.

Код ΠΌΠΎΠ΄Π΅Π»ΠΈ Entry (ΠΈΠ· Ρ„Π°ΠΉΠ»Π° models.py) выглядит Ρ‚Π°ΠΊ:

Класс Entry наслСдуСт ΠΎΡ‚ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса Model, ΠΊΠ°ΠΊ ΠΈ рассмотрСнный Ρ€Π°Π½Π΅Π΅ класс Topic.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΈΜ† Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, topic, являСтся экзСмпляром ForeignKey. Π’Π΅Ρ€ΠΌΠΈΠ½ Π²Π½Π΅ΡˆΠ½ΠΈΠΈΜ† ΠΊΠ»ΡŽΡ‡ (foreign key) происходит ΠΈΠ· Ρ‚Π΅ΠΎΡ€ΠΈΠΈ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π½Π΅ΡˆΠ½ΠΈΠΈΜ† ΠΊΠ»ΡŽΡ‡ содСрТит ссылку Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ запись Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ каТдая запись связываСтся с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΈΜ† Ρ‚Π΅ΠΌΠΎΠΈΜ†. ΠšΠ°ΠΆΠ΄ΠΎΠΈΜ† Ρ‚Π΅ΠΌΠ΅ ΠΏΡ€ΠΈ создании присваиваСтся ΠΊΠ»ΡŽΡ‡, ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Если потрСбуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ связь ΠΌΠ΅ΠΆΠ΄Ρƒ двумя записями Π΄Π°Π½Π½Ρ‹Ρ…, Django ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ»ΡŽΡ‡, связанный с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ВскорС ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Π°ΠΊΠΈΠ΅ связи для получСния всСх записСй, связанных с Π·Π°Π΄Π°Π½Π½ΠΎΠΈΜ† Ρ‚Π΅ΠΌΠΎΠΈΜ†. АргумСнт on_delete=models.CASCADE сообщаСт Django, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Ρ‚Π΅ΠΌΡ‹ всС записи, связанныС с этой Ρ‚Π΅ΠΌΠΎΠΈΜ†, Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ (это называСтся каскадным ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ).

Π—Π°Ρ‚Π΅ΠΌ ΠΈΠ΄Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ с ΠΈΠΌΠ΅Π½Π΅ΠΌ text, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΈΜ† являСтся экзСмпляром TextField. Полю Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π΅ трСбуСтся, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… записСй Π½Π΅ ограничиваСтся. Атрибут date_added позволяСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ записи Π² порядкС ΠΈΡ… создания ΠΈ ΡΠ½Π°Π±ΠΆΠ°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ запись Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΈΜ† ΠΌΠ΅Ρ‚ΠΊΠΎΠΈΜ†.

Класс Meta вкладываСтся Π² класс Entry. Класс Meta Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ модСлью, Π² Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠ½ позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΈΜ† Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΈΜ† ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Django ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ мноТСствСнного числа Entries ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΊ ΠΎΠ΄Π½ΠΎΠΈΜ† записи.

triangle-exclamation

ΠœΠ΅Ρ‚ΠΎΠ΄ __str__() сообщаСт Django, какая информация Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌ записям. Π’Π°ΠΊ ΠΊΠ°ΠΊ запись ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ достаточно Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌ Π±Π»ΠΎΠΊΠΎΠΌ тСкста, ΠΌΡ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Django Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 50 символов. Π’Π°ΠΊΠΆΠ΅ добавляСтся ΠΌΠ½ΠΎΠ³ΠΎΡ‚ΠΎΡ‡ΠΈΠ΅ β€” ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ тСкста.

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Entry

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½ΠΎΠ²ΡƒΡŽ модСль, ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ провСсти снова. ВскорС Π²Ρ‹ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ½Π΅Ρ‚Π΅ ΠΊ этому процСссу:

  • Π²Ρ‹ измСняСтС models.py

  • выполняСтС ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ python manage.py makemigrations имя_прилоТСния

  • Π·Π°Ρ‚Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ python manage.py migrate

ΠŸΡ€ΠΎΠ²Π΅Π΄ΠΈΡ‚Π΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π²Ρ‹Π²ΠΎΠ΄:

makemigrations & migrate

Команда Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ 0002_entry.py, которая сообщаСт Django, ΠΊΠ°ΠΊ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, связанной с модСлью Entry.

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ migrate Django ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

РСгистрация Entry Π½Π° административном сайтС

МодСль Entry Ρ‚ΠΎΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π€Π°ΠΉΠ» admin.py Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

Π’Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π½Π° страницу http://localhost/admin/arrow-up-right ΠΈΠ»ΠΈ http://127.0.0.1/admin/arrow-up-right, ΠΈ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» Entries Π² ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ learning_logs.

Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ссылкС Add для Entries ΠΈΠ»ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° Entries ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Add.

На экранС появляСтся Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΈΜ†ΡΡ список для Π²Ρ‹Π±ΠΎΡ€Π° Ρ‚Π΅ΠΌΡ‹, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΈΜ† создаСтся запись, ΠΈ тСкстовоС ΠΏΠΎΠ»Π΅ для Π²Π²ΠΎΠ΄Π° записи. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π² Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌΡΡ спискС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Chess ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ запись.

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ссылки Save Π²Ρ‹ Π²Π΅Ρ€Π½Π΅Ρ‚Π΅ΡΡŒ ΠΊ основной административной страницС. Π—Π΄Π΅ΡΡŒ ΠΏΡ€ΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ прСимущСства использования Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° text[:50] Π² качСствС строкового прСдставлСния ΠΊΠ°ΠΆΠ΄ΠΎΠΈΜ† записи. Π Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с большим количСством записСй Π² административном интСрфСйсС Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅, Ссли Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ записи вмСсто Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ тСкста.

Add new entry
triangle-exclamation

Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Django

Π’Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ сСансС.

Π­Ρ‚Π° интСрактивная срСда, называСмая ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ (shell) Django, прСкрасно ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для тСстирования ΠΈ диагностики ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ сСанса Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅:

Команда python manage.py shell (выполняСмая Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΈΜ† Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΈΜ† срСдС) запускаСт ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Python, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΈΜ† ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΈΜ† Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ модСль Topic ΠΈΠ· модуля learning_logs.models. Π—Π°Ρ‚Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Topic.objects.all() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния всСх экзСмпляров ΠΌΠΎΠ΄Π΅Π»ΠΈ Topic, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΈΜ† список называСтся ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ (queryset).

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ ΠΈΡ‚ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° пСрСбираСтся Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ содСрТимоС списка. НапримСр, просмотр ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Ρ‚Π΅ΠΌΡ‹, выполняСтся Ρ‚Π°ΠΊ:

Π˜Ρ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ сохраняСтся Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ topics, послС Ρ‡Π΅Π³ΠΎ выводится Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ id ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° topic ΠΈ Π΅Π³ΠΎ строковоС прСдставлСниС. ΠœΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΌΠ΅ Chess присвоСн ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ 1, Π° Rock Climbing присвоСн ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ 2.

Зная ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Topic.objects.get() ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТащиСся Π² Π½Π΅ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ значСния text ΠΈ date_added для Ρ‚Π΅ΠΌΡ‹ Chess:

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ записи, относящиСся ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅. Π Π°Π½Π΅Π΅ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ topic для ΠΌΠΎΠ΄Π΅Π»ΠΈ Entry. Он Π±Ρ‹Π» экзСмпляром ForeighKey, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌ связь ΠΌΠ΅ΠΆΠ΄Ρƒ записью ΠΈ Ρ‚Π΅ΠΌΠΎΠΉ.

Django ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту связь для получСния всСх записСй, относящихся ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅:

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ внСшнСго ΠΊΠ»ΡŽΡ‡Π°, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΈΠΌΠ΅Π½Π΅ΠΌ связанной ΠΌΠΎΠ΄Π΅Π»ΠΈ, записанным Π² Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт символ подчСркивания ΠΈ слово set.

Допустим, Ρƒ вас ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Pizza ΠΈ Topping ΠΈ модСль Topping связана с Pizza Ρ‡Π΅Ρ€Π΅Π· внСшний ΠΊΠ»ΡŽΡ‡.

Если ваш ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ называСтся my_pizza, для получСния всСх связанных с Π½ΠΈΠΌ экзСмпляров Topping ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ my_pizza.topping_set.all().

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ синтаксис ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π΅ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ страниц, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ.

ΠžΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΎΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½Π° Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ваш ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Если Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π·Π°Π΄ΡƒΠΌΠ°Π½ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π² Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ создаСтС Π² своСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.

Если ΠΊΠΎΠ΄ Π²Ρ‹Π΄Π°Π΅Ρ‚ ошибки ΠΈΠ»ΠΈ Π½Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ, Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² простой ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π²Π΅Π±-страницы.

triangle-exclamation

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ страниц: домашняя страница Learning Log

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ процСсс создания Π²Π΅Π±-страниц Π² Django состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… стадий:

  1. опрСдСлСния URL

  2. написания прСдставлСний

  3. написания шаблонов.

Π‘Π½Π°Ρ‡Π°Π»Π° слСдуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ схСмы (patterns) URL. Π‘Ρ…Π΅ΠΌΠ° URL описываСт структуру URL-адрСса ΠΈ сообщаСт Django, Π½Π° ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ слСдуСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ сопоставлСнии запроса Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° с URL-адрСсом Π½Π° сайтС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡƒΡŽ страницу.

Π—Π°Ρ‚Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ URL-адрСс связываСтся с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ прСдставлСниСм β€” функция прСдставлСниС Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ страницС.

Ѐункция прСдставлСния часто Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ шаблон, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ строит страницу, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ Π»ΡƒΡ‡ΡˆΠ΅ поняли, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ этот ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, создадим домашнюю страницу для прилоТСния Learning Log. ΠœΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ URL-адрСс домашнСй страницы, напишСм для Π½Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ прСдставлСния ΠΈ создадим простой шаблон.

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ сСйчас всСго лишь убСТдаСмся Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Learning Log Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ, страница ΠΏΠΎΠΊΠ° останСтся простой. Когда ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π΅Π³ΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ. Пока Π½Π° домашнСй страницС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС.

БопоставлСниС URL

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ страницы, вводя URL-адрСса Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎ ссылкам, поэтому ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ URL-адрСса понадобятся Π² нашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.

НачнСм с URL домашнСй страницы: это Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ адрСс, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для обращСния ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ.

На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ URL-адрСс http://localhost:8000/arrow-up-right Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сайт, сгСнСрированный Django ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΠ½ сообщаСт ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±Ρ‹Π» создан ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. ΠœΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ домашнюю страницу, связав Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ URL-адрСс с домашнСй страницСй Learning Log.

Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° learning_log ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» urls.py. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π² Π½Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ строки ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ URL-адрСсами ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ административным сайтом.

Π’ Ρ‚Π΅Π»Π΅ Ρ„Π°ΠΉΠ»Π° опрСдСляСтся пСрСмСнная urlpatterns. Π’ Ρ„Π°ΠΉΠ»Π΅ urls.py, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Ρ†Π΅Π»ΠΎΠΌ, пСрСмСнная urlpatterns Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π°Π±ΠΎΡ€Ρ‹ URL-адрСсов ΠΈΠ· ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Код path('admin/', admin.site.urls) Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ admin.site.urls, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ всС URL-адрСса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒΡΡ с административного сайта.

ИзмСним Π² этом Ρ„Π°ΠΉΠ»Π΅ URL-адрСса learning_logs:

Π€Π°ΠΉΠ» urls.py ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ находится Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ learning_log

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ„Π°ΠΉΠ» urls.py Π² ΠΏΠ°ΠΏΠΊΠ΅ learning_logs.

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Python, сохранитС Π΅Π³ΠΎ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ urls.py Π² learning_logs ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π² Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π§Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ понятно, с ΠΊΠ°ΠΊΠΎΠΈΜ† вСрсиСй urls.py ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ, Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ„Π°ΠΈΜ†Π»Π° добавляСтся строка Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π—Π°Ρ‚Π΅ΠΌ импортируСтся функция path, ΠΎΠ½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для связывания URL с прСдставлСниями.

Π’Π°ΠΊΠΆΠ΅ импортируСтся ΠΌΠΎΠ΄ΡƒΠ»ΡŒ views, Ρ‚ΠΎΡ‡ΠΊΠ° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Python ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ прСдставлСния ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΈΜ† ΠΌΠΎΠ΄ΡƒΠ»ΡŒ urls.py.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ app_name ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Django ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ этот Ρ„Π°ΠΈΜ†Π» urls.py ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΈΜ†Π»ΠΎΠ² Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… прилоТСниях Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ urlpatterns Π² этом ΠΌΠΎΠ΄ΡƒΠ»Π΅ прСдставляСт собой список страниц, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ· прилоТСния learning_logs.

Π‘Ρ…Π΅ΠΌΠ° URL прСдставляСт собой Π²Ρ‹Π·ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ path() с трСмя Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΈΜ† Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ содСрТит строку, которая ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Django ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΈΜ† запрос.

Django ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΈΜ† URL ΠΈ пытаСтся ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° прСдставлСниС.

Для этого Django ΠΈΡ‰Π΅Ρ‚ срСди всСх ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… схСм URL Ρ‚Ρƒ, которая соотвСтствуСт Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ запросу.

Π‘Π°Π·ΠΎΠ²Ρ‹ΠΈΜ† URL-адрСс ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (http://localhost:8000/arrow-up-right) игнорируСтся, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ пустая строка совпадаСт с Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ URL-адрСсом.

Π›ΡŽΠ±ΠΎΠΈΜ† Π΄Ρ€ΡƒΠ³ΠΎΠΈΜ† URL-адрСс Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ этому Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ, ΠΈ Django Π²Π΅Ρ€Π½Π΅Ρ‚ страницу с ΠΎΡˆΠΈΠ±ΠΊΠΎΠΈΜ†, Ссли Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΈΜ† URL Π½Π΅ соотвСтствуСт Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΈΜ† ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… схСм URL.

Π’Ρ‚ΠΎΡ€ΠΎΠΈΜ† Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ path() опрСдСляСт Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ· views.py.

Когда Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΈΜ† URL-адрСс соотвСтствуСт рСгулярному Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ, Django Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ index() ΠΈΠ· views.py (ΠΌΡ‹ напишСм эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π΄Π°Π»Π΅Π΅).

Π’Ρ€Π΅Ρ‚ΠΈΠΈΜ† Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ опрСдСляСт имя index для этой схСмы URL, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π° Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… частях ΠΊΠΎΠ΄Π°.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΈΜ† Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° потрСбуСтся ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ссылку Π½Π° домашнюю страницу, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это имя вмСсто URL.

НаписаниС прСдставлСния

Ѐункция прСдставлСния ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· запроса, ΠΏΠΎΠ΄Π³ΠΎΡ‚Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для построСния страницы, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ β€” часто с использованиСм шаблона, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΠΈΜ† Π²ΠΈΠ΄ страницы.

Π€Π°ΠΈΜ†Π» views.py Π² learning_logs Π±Ρ‹Π» сгСнСрирован автоматичСски ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ python manage.py startapp

На Π΄Π°Π½Π½Ρ‹ΠΈΜ† ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΅Π³ΠΎ содСрТимоС выглядит Ρ‚Π°ΠΊ:

БСйчас Ρ„Π°ΠΉΠ» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ render(), которая Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° основании Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… ΠΎΡ‚ прСдставлСний. ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» прСдставлСния ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ домашнСй страницы:

Если URL запроса совпадаСт с Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ схСмой, Django ΠΈΡ‰Π΅Ρ‚ Π² Ρ„Π°ΠΉΠ»Π΅ views.py Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ с ΠΈΠΌΠ΅Π½Π΅ΠΌ index(), послС Ρ‡Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдставлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ request.

Π’ нашСм случаС никакая ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… для страницы Π½Π΅ Π½ΡƒΠΆΠ½Π°, поэтому ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сводится ΠΊ Π²Ρ‹Π·ΠΎΠ²Ρƒ render(). Ѐункция render() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° β€” исходный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ запроса ΠΈ шаблон, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для построСния страницы. Π”Π°Π²Π°ΠΉΡ‚Π΅ напишСм этот шаблон.

НаписаниС шаблона

Π¨Π°Π±Π»ΠΎΠ½ опрСдСляСт ΠΎΠ±Ρ‰ΠΈΠΈΜ† Π²Π½Π΅ΡˆΠ½ΠΈΠΈΜ† Π²ΠΈΠ΄ страницы, Π° Django заполняСт Π΅Π³ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запросС страницы.

Π¨Π°Π±Π»ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ ΠΎΡ‚ прСдставлСния.

Π’Π°ΠΊ ΠΊΠ°ΠΊ нашС прСдставлСниС Π΄ΠΎΠΌΠ°ΡˆΠ½Π΅ΠΈΜ† страницы Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… Π½Π΅ прСдоставляСт, шаблон получаСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простым.

Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ learning_logs создайтС Π½ΠΎΠ²Ρ‹ΠΈΜ† ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΈΠΌΠ΅Π½Π΅ΠΌ templates. Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ templates создайтС Π΄Ρ€ΡƒΠ³ΠΎΠΈΜ† ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΈΠΌΠ΅Π½Π΅ΠΌ learning_logs.

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΈΜ† взгляд такая структура каТСтся ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠΈΜ† (ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ learning_logs Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ templates Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° learning_logs), Π½ΠΎ созданная Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ структура Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Django Π΄Π°ΠΆΠ΅ Π² контСкстС большого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, состоящСго ΠΈΠ· мноТСства ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈΜ†.

Π’ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ learning_logs создайтС Π½ΠΎΠ²Ρ‹ΠΈΜ† Ρ„Π°ΠΈΜ†Π» с ΠΈΠΌΠ΅Π½Π΅ΠΌ index.html

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΠ»Π½ΠΎΠ΅ имя Ρ„Π°ΠΈΜ†Π»Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄ learning_log/learning_logs/templates/learning_logs/index.html

Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π² Π½Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΈΜ† тСкст:

Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ простой Ρ„Π°ΠΉΠ». Если Π²Ρ‹ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с синтаксисом HTML, Ρ‚Π΅Π³ΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ Π°Π±Π·Π°Ρ†Ρ‹.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ запросС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ URL-адрСса ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° http://localhost:8000/arrow-up-right Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ страницу вмСсто страницы ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Django Π±Π΅Ρ€Π΅Ρ‚ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΉ URL-адрСс ΠΈ Π²ΠΈΠ΄ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ совпадаСт со схСмой ""

Π’ этом случаС Django Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ views.index(), Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ страницы с использованиСм шаблона, содСрТащСгося Π² index.html.

И хотя ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ для ΠΎΠ΄Π½ΠΎΠΉ страницы этот процСсс слишком слоТСн, Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ URL-адрСсов, прСдставлСний ΠΈ шаблонов Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ.

Оно позволяСт ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… аспСктах ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π° Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ участники ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ‚Π΅Ρ… областях, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ΠΈ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠΈΠ»ΡŒΠ½Ρ‹.

НапримСр, спСциалист ΠΏΠΎ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒΡΡ модСлями, программист β€” ΠΊΠΎΠ΄ΠΎΠΌ прСдставлСния, Π° Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ β€” шаблонами.

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… страниц

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Ρ‡Π°Π»ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ процСсс построСния страниц, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Learning Log.

ΠœΡ‹ создадим Π΄Π²Π΅ страницы для Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…:

  • Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ список всСх Ρ‚Π΅ΠΌ

  • Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ β€” всС записи ΠΏΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницы ΠΌΡ‹ создадим схСму URL, напишСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ прСдставлСния ΠΈ создадим шаблон.

Но ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅, стоит ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ шаблон, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ всС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

НаслСдованиС шаблонов

ΠŸΡ€ΠΈ построСнии сайта Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ элСмСнты ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ эти элСмСнты нСпосрСдствСнно Π² страницы, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ шаблон с ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠΌΠΈΡΡ элСмСнтами

ВсС страницы Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ этого шаблона. Π’Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… аспСктов ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницы ΠΈ сущСствСнно упростит ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰Π΅Π³ΠΎ оформлСния ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² Ρ†Π΅Π»ΠΎΠΌ.

Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ шаблон

НачнСм с создания шаблона base.html Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с Ρ„Π°ΠΉΠ»ΠΎΠΌ index.html

Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ элСмСнты, ΠΎΠ±Ρ‰ΠΈΠ΅ для всСх страниц, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΎΡ‚ base.html.

Пока СдинствСнным элСмСнтом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС, остаСтся Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π² Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ части страницы.

Π’Π°ΠΊ ΠΊΠ°ΠΊ шаблон Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ страницу, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π² ссылку Π½Π° домашнюю страницу:

ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Π° создаСт Π°Π±Π·Π°Ρ† с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ссылка Π½Π° домашнюю страницу. Для построСния ссылки использовался ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ Ρ‚Π΅Π³, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками ΠΈ Π·Π½Π°ΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π° {% %}. Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ Ρ‚Π΅Π³ прСдставляСт собой Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° страницС. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ Ρ‚Π΅Π³ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ URL-адрСс, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ схСмС URL, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π² Ρ„Π°ΠΉΠ»Π΅ learning_logs/urls.py с ΠΈΠΌΠ΅Π½Π΅ΠΌ 'index'.

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ learning_logs β€” пространство ΠΈΠΌΠ΅Π½, Π° index β€” схСма URL с ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² этом пространствС ΠΈΠΌΠ΅Π½.

ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ опрСдСляСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, присвоСнным app_name Π² Ρ„Π°ΠΈΜ†Π»Π΅ learning_logs/urls.py

Π’ этой простой страницС HTML ссылка Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² якорный Ρ‚Π΅Π³:

Π“Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ URL-адрСса ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΌ Ρ‚Π΅Π³ΠΎΠΌ сущСствСнно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ссылок. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ URL-адрСс Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, достаточно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ схСму URL Π² urls.py, Π° Django автоматичСски вставит ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ URL-адрСс ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ запросС страницы.

КаТдая страница Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚ base.html, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π² дальнСйшСм Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ссылка Π½Π° домашнюю страницу.

Π’Π°ΠΊΠΆΠ΅ Π² base.html вставляСтся ΠΏΠ°Ρ€Π° Ρ‚Π΅Π³ΠΎΠ² block.

Π‘Π»ΠΎΠΊ с ΠΈΠΌΠ΅Π½Π΅ΠΌ content Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅Ρ‚ мСсто

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ, ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‰Π°Ρ Π² Π±Π»ΠΎΠΊ content, Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ шаблоном.

Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΈΜ† шаблон Π½Π΅ обязан ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΈΜ† Π±Π»ΠΎΠΊ Π² своСм Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мСсто для любого количСства Π±Π»ΠΎΠΊΠΎΠ², Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΈΜ† шаблон Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π½ΠΈΡ…, сколько потрСбуСтся.

Π”ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΉ шаблон

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„Π°ΠΈΜ†Π» index.html Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ наслСдовал ΠΎΡ‚ base.html

ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΈΜ† Ρ„Π°ΠΈΜ†Π» index.html выглядит Ρ‚Π°ΠΊ:

Бравнивая этот Ρ„Π°ΠΉΠ» с исходной вСрсиСй index.html, ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Learning Log Π·Π°ΠΌΠ΅Π½Π΅Π½ ΠΊΠΎΠ΄ΠΎΠΌ наслСдования ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ шаблона.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅Π³ΠΎ шаблона Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‚Π΅Π³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сообщаСт Django, ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ шаблона ΠΎΠ½ наслСдуСт. \

Π€Π°ΠΉΠ» base.html являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ learning_logs, поэтому learning_logs Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. Π­Ρ‚Π° строка ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ всС содСрТимоС ΠΈΠ· шаблона base.html ΠΈ позволяСт index.html ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² пространство, Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π±Π»ΠΎΠΊΠΎΠΌ content.

Π‘Π»ΠΎΠΊ content опрСдСляСтся вставкой Ρ‚Π΅Π³Π° {% block %} с ΠΈΠΌΠ΅Π½Π΅ΠΌ content. ВсС, Ρ‡Ρ‚ΠΎ Π½Π΅ наслСдуСтся ΠΎΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ шаблона, ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Π±Π»ΠΎΠΊ content.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС это Π°Π±Π·Π°Ρ† с описаниСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Learning Log.

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‚Π΅Π³Π° {% endblock content %} ΠΌΡ‹ сообщаСм ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ content Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ

НаличиС ΠΈΠΌΠ΅Π½ΠΈ Ρƒ {% endblock %} Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π½ΠΎ Ссли шаблон увСличится ΠΈ станСт Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ нСсколько Π±Π»ΠΎΠΊΠΎΠ², Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ сразу Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΈΜ† ΠΈΠΌΠ΅Π½Π½ΠΎ Π±Π»ΠΎΠΊ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° наслСдования шаблонов:

Π’ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΈΜ† шаблон достаточно Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ для этой страницы. Π’

Π’Π°ΠΊΠΎΠΈΜ† ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΈΜ† шаблон, Π½ΠΎ ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ сайта.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ элСмСнт, ΠΎΠ±Ρ‰ΠΈΠΈΜ† для ΠΌΠ½ΠΎΠ³ΠΈΡ… страниц, достаточно ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ элСмСнт Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ шаблонС.

ВнСсСнныС измСнСния Π±ΡƒΠ΄ΡƒΡ‚ автоматичСски пСрСнСсСны Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ страницу, Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΡ‚ этого шаблона.

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈΠ· дСсятков ΠΈ сотСн страниц такая структура Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈ ускоряСт Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΡƒ сайта.

triangle-exclamation

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° со списком Ρ‚Π΅ΠΌ

Π Π°Π·ΠΎΠ±Ρ€Π°Π²ΡˆΠΈΡΡŒ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ эффСктивно ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ построСниС страниц, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄Π²ΡƒΡ… страницах:

  • спискС всСх Ρ‚Π΅ΠΌ

  • спискС записСй ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅.

На страницС Ρ‚Π΅ΠΌ выводится ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ всСх Ρ‚Π΅ΠΌ, созданных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ, ΠΈ это пСрвая страница, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°ΠΌ придСтся Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π‘Ρ…Π΅ΠΌΠ° URL для Ρ‚Π΅ΠΌ

Π‘Π½Π°Ρ‡Π°Π»Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ URL для страницы Ρ‚Π΅ΠΌ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² Ρ‚Π°ΠΊΠΈΡ… случаях выбираСтся простой Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ URL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΡΡƒΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, прСдставлСнной Π½Π° страницС. ΠœΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ словом topics, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ для получСния страницы Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ URL http://localhost:8000/topics/arrow-up-right

ИзмСнСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт внСсти Π² learning_logs/urls.py:

ΠœΡ‹ просто Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ topics/ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ рСгулярного выраТСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ с URL-адрСсом домашнСй страницы.

Когда Django провСряСт Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ URL-адрСс, эта схСма совпадСт с Π»ΡŽΠ±Ρ‹ΠΌ URL-адрСсом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ состоит ΠΈΠ· Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ URL-адрСса ΠΈ слова topics.

БлСш Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ, Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ, Π½ΠΎ послС слова topics Π½ΠΈΡ‡Π΅Π³ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ, ΠΈΠ½Π°Ρ‡Π΅ схСма Π½Π΅ совпадСт.

Π›ΡŽΠ±ΠΎΠΉ запрос с URL-адрСсом, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ этой схСмС, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ topics() Π² views.py

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ topics

Ѐункция topics() Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. ОбновлСнная вСрсия views.py выглядит Ρ‚Π°ΠΊ:

Π‘Π½Π°Ρ‡Π°Π»Π° импортируСтся модСль, связанная с Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ topics() Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ request, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΈΜ† Django ΠΎΡ‚ сСрвСра.

topics = Topic.objects.order_by('date_added') β€” выдаСтся запрос ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Topic, отсортированных ΠΏΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ date_added.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΈΜ† ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΈΜ† Π½Π°Π±ΠΎΡ€ сохраняСтся Π² topics.

return render(request, 'learning_logs/topics.html', context) β€” опрСдСляСтся контСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΈΜ† Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ.

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ прСдставляСт собой ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² шаблонС для обращСния ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ, Π° значСниями β€” Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС сущСствуСт всСго ΠΎΠ΄Π½Π° ΠΏΠ°Ρ€Π° Β«ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β», которая содСрТит Π½Π°Π±ΠΎΡ€ Ρ‚Π΅ΠΌ, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… Π½Π° страницС.

ΠŸΡ€ΠΈ построСнии страницы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΈΜ† Π΄Π°Π½Π½Ρ‹Π΅, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ render() пСрСдаСтся пСрСмСнная context, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ request ΠΈ ΠΏΡƒΡ‚ΡŒ ΠΊ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ.

Π¨Π°Π±Π»ΠΎΠ½ topics

Π¨Π°Π±Π»ΠΎΠ½ страницы со списком Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ context, Ρ‡Ρ‚ΠΎΠ±Ρ‹ шаблон ΠΌΠΎΠ³ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, прСдоставлСнныС topics(). Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ topics.html Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с index.html

Π’Ρ‹Π²ΠΎΠ΄ списка Ρ‚Π΅ΠΌ Π² шаблонС осущСствляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘Π½Π°Ρ‡Π°Π»Π° Ρ‚Π΅Π³ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΎ наслСдовании ΠΎΡ‚ base.html, ΠΊΠ°ΠΊ ΠΈ Π² случаС с шаблоном index, послС Ρ‡Π΅Π³ΠΎ открываСтся Π±Π»ΠΎΠΊ content. Π’Π΅Π»ΠΎ страницы содСрТит ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ (bulleted) список Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Ρ‚Π΅ΠΌ.

Π’Π½ΡƒΡ‚Ρ€ΠΈ списка <ul> находится Π΄Ρ€ΡƒΠ³ΠΎΠΈΜ† ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΈΜ† Ρ‚Π΅Π³, эквивалСнтный Ρ†ΠΈΠΊΠ»Ρƒ for, для ΠΏΠ΅Ρ€Π΅- Π±ΠΎΡ€Π° списка topics ΠΈΠ· словаря context.

Код, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΈΜ† Π² шаблонС, отличаСтся ΠΎΡ‚ Python Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ особСнностями. Python ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ отступы для обозначСния строк, входящих Π² Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π’ шаблонС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΈΜ† Ρ†ΠΈΠΊΠ» for Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ½Π°Π±ΠΆΠ°Ρ‚ΡŒΡΡ явным Ρ‚Π΅Π³ΠΎΠΌ {% endfor %}, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ½Π΅Ρ† Ρ†ΠΈΠΊΠ»Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Ρ†ΠΈΠΊΠ»Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²ΠΈΠ΄Π°:

Π’ Ρ†ΠΈΠΊΠ»Π΅ каТдая Ρ‚Π΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π° Π² элСмСнт ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ списка <li>

Π§Ρ‚ΠΎΠ±Ρ‹ вывСсти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² шаблонС, Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π΅Π΅ имя Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки.

Π€ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки Π½Π° страницС Π½Π΅ появятся, ΠΎΠ½ΠΈ всСго лишь ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ Django ΠΎΠ± использовании шаблонной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Код {{ topic }} Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ topic ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ Ρ†ΠΈΠΊΠ»Π°.

Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ Ρ‚Π΅Π³ {% empty %},сообщаСт Django, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ отсутствии элСмСнтов Π² спискС.

Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ выводится сообщСниС ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΌΡ‹ Π΅Ρ‰Π΅ Π½Π΅ созданы. ПослСдниС Π΄Π²Π΅ строки Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‚ Ρ†ΠΈΠΊΠ» for ΠΈ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ список.

Π—Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ шаблон ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° страницу с Ρ‚Π΅ΠΌΠ°ΠΌΠΈ. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² base.html:

ПослС ссылки Π½Π° домашнюю страницу добавляСтся дСфис, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ вставляСтся ссылка Π½Π° страницу Ρ‚Π΅ΠΌ, которая Ρ‚Π°ΠΊΠΆΠ΅ прСдставлСна ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΌ Ρ‚Π΅Π³ΠΎΠΌ.

Π­Ρ‚Π° строка ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Django ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ссылку, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ схСмС URL с ΠΈΠΌΠ΅Π½Π΅ΠΌ 'topics' Π² learning_logs/urls.py

Обновив домашнюю страницу Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ссылку Topicsarrow-up-right

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅ΠΌ

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом станСт созданиС страницы для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅, с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Ρ‚Π΅ΠΌΡ‹ ΠΈ всСми записями ΠΏΠΎ этой Ρ‚Π΅ΠΌΠ΅.

ΠœΡ‹ снова ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π½ΠΎΠ²ΡƒΡŽ схСму URL, напишСм прСдставлСниС ΠΈ создадим шаблон.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π° страницС со списком Ρ‚Π΅ΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ списка Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² ссылку Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ страницу ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹.

Π‘Ρ…Π΅ΠΌΠ° URL для ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅ΠΌ

Π‘Ρ…Π΅ΠΌΠ° URL для страницы ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ отличаСтся ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… схСм URL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Π»ΠΈΡΡŒ Π½Π°ΠΌ Ρ€Π°Π½Π΅Π΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ id Ρ‚Π΅ΠΌΡ‹ для обозначСния Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Ρ‚Π΅ΠΌΡ‹.

НапримСр, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ страницу с ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ Chess (id=1), эта страница Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ URL-адрСс http://localhost:8000/topics/1/arrow-up-right

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит схСма для этого URL-адрСса ΠΈΠ· learning_logs/urls.py:

Рассмотрим строку 'topics/int:topic_id/' Π² этой схСмС URL.

ΠŸΠ΅Ρ€Π²Π°Ρ Ρ‡Π°ΡΡ‚ΡŒ строки сообщаСт Django, Ρ‡Ρ‚ΠΎ ΠΈΡΠΊΠ°Ρ‚ΡŒ слСдуСт URL-адрСса, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π° Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ адрСсом ΠΈΠ΄Π΅Ρ‚ слово topics.

Вторая Ρ‡Π°ΡΡ‚ΡŒ строки, /int:topic_id/, описываСт Ρ†Π΅Π»ΠΎΠ΅ число, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя слСшами. Π­Ρ‚ΠΎ Ρ†Π΅Π»ΠΎΠ΅ число сохраняСтся Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ topic_id.

Когда Django Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ URL-адрСс, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ этой схСмС, вызываСтся функция прСдставлСния topic(), Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ пСрСдаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, хранящССся Π² topic_id.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ topic_id ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния Π½ΡƒΠΆΠ½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹

Ѐункция topic() Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΌΡƒ ΠΈ всС связанныС с Π½Π΅ΠΉ записи ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…:

Π­Ρ‚ΠΎ пСрвая функция прСдставлСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ трСбуСтся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° request.

Ѐункция ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, совпавшСС с Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ /int:topic_id/, ΠΈ сохраняСт Π΅Π³ΠΎ Π² topic_id < def topic(request, topic_id) >

topic = Topic.objects.get(id=topic_id) β€” функция get() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для получСния Ρ‚Π΅ΠΌΡ‹ (ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ это Π΄Π΅Π»Π°Π»ΠΈ Π² ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ΅ Django).

entries = topic.entry_set.order_by('-date_added') β€” Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ записи, связанныС с Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠΎΠΉ, ΠΈ ΠΎΠ½ΠΈ ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ date_added: Π·Π½Π°ΠΊ «минус» ΠΏΠ΅Ρ€Π΅Π΄ date_added сортируСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ самыС послСдниС записи Π±ΡƒΠ΄ΡƒΡ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹Ρ… мСстах.

Π’Π΅ΠΌΠ° ΠΈ записи ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² словарС context β€” context = {'topic': topic, 'entries': entries}, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСдаСтся ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ topic.html β€” return render(request, 'learning_logs/topic.html', context)

circle-exclamation

Π¨Π°Π±Π»ΠΎΠ½ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹

Π’ шаблонС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹ ΠΈ тСкст записСй. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Ссли ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ сдСлано Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ записи:

Π¨Π°Π±Π»ΠΎΠ½ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ base.html, ΠΊΠ°ΠΊ ΠΈ для всСх страниц ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π—Π°Ρ‚Π΅ΠΌ выводится тСкущая Ρ‚Π΅ΠΌΠ° ΠΈΠ· ΡˆΠ°Π±Π»ΠΎΠ½Π½ΠΎΠΈΜ† ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΈΜ† {{ topic }}:

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ topic доступна, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ context.

Π—Π°Ρ‚Π΅ΠΌ создаСтся ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΈΜ† список со всСми записями ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ <ul>

ΠŸΠ΅Ρ€Π΅Π±ΠΎΡ€ записСй осущСствляСтся Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ это дСлалось Ρ€Π°Π½Π΅Π΅ для Ρ‚Π΅ΠΌ:

Π‘ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ элСмСнтом списка ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π²Π° значСния: врСмСнная ΠΌΠ΅Ρ‚ΠΊΠ° ΠΈ ΠΏΠΎΠ»Π½Ρ‹ΠΈΜ† тСкст ΠΊΠ°ΠΆΠ΄ΠΎΠΈΜ† записи.

Для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΈΜ† ΠΌΠ΅Ρ‚ΠΊΠΈ выводится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° date_added.

Π’ ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… Django Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ Ρ‡Π΅Ρ€Ρ‚Π° (|) прСдставляСт Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ β€” Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Π½ΠΎΠΈΜ† ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΈΜ†.

Π€ΠΈΠ»ΡŒΡ‚Ρ€ date:'M d, Y H:i' Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΊΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ January 1, 2023 23:00.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ»Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ text (вмСсто ΠΏΠ΅Ρ€Π²Ρ‹Ρ… 50 символов ΠΊΠ°ΠΆΠ΄ΠΎΠΈΜ† записи).

Π€ΠΈΠ»ΡŒΡ‚Ρ€ linebreaks

Он слСдит Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π»ΠΈΠ½Π½Ρ‹ΠΈΜ† тСкст содСрТал Ρ€Π°Π·Ρ€Ρ‹Π²Ρ‹ строк Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΌ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ (вмСсто Π±Π»ΠΎΠΊΠ° Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎΠ³ΠΎ тСкста).

Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΈΜ† Ρ‚Π΅Π³ {% empty %} ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π²Ρ‹Π²ΠΎΠ΄Π° сообщСния ΠΎΠ± отсутствии записСй.

Бсылки Π½Π° страницС

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ страницу ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ шаблон списка Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ каТдая Ρ‚Π΅ΠΌΠ° Π²Π΅Π»Π° Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ страницу.

ВнСситС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ измСнСния Π² topics.html:

Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ Ρ‚Π΅Π³ URL ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для гСнСрирования ссылки Π½Π° основании схСмы URL ΠΈΠ· learning_logs с ΠΈΠΌΠ΅Π½Π΅ΠΌ 'topic'.

Π­Ρ‚ΠΎΠΉ схСмС URL Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ topic_id, поэтому Π² ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ Ρ‚Π΅Π³ URL добавляСтся Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ topic.id. Π’Π΅ΠΏΠ΅Ρ€ΡŒ каТдая Ρ‚Π΅ΠΌΠ° Π² спискС прСдставляСт собой ссылку Π½Π° страницу Ρ‚Π΅ΠΌΡ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ http://localhost:8000/topics/1/arrow-up-right

Если Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ страницу Ρ‚Π΅ΠΌ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° Π»ΡŽΠ±ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ, открываСтся страница с записями

learning_logs Topics
circle-exclamation

Π£Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ записи ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

Π§Ρ‚ΠΎ являСтся самым Π³Π»Π°Π²Π½Ρ‹ΠΌ для Π²Π΅Π±-прилоТСния? Π›ΡŽΠ±ΠΎΠΈΜ† ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, смоТСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌ. ΠœΡ‹ построим Ρ„ΠΎΡ€ΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ смогут Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ свои Ρ‚Π΅ΠΌΡ‹ ΠΈ записи, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Django Π·Π°Ρ‰ΠΈΡ‰Π°Π΅Ρ‚ прилоТСния ΠΎΡ‚ распространСнных Π°Ρ‚Π°ΠΊ Π½Π° страницы с Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΌΡ‹Π²Π°Π½ΠΈΠ΅ срСдств Π·Π°Ρ‰ΠΈΡ‚Ρ‹ вашСго прилоТСния.

Π—Π°Ρ‚Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° систСма ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΈΜ†. ΠœΡ‹ создадим страницу рСгистрации, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΈΜ† ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ смогут ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ записи, ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠΌ доступ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ страницам для Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΈΜ†. Π—Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдставлСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ‹ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ свои собствСнныС Π΄Π°Π½Π½Ρ‹Π΅. Π’Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΈΜ†.

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ систСму Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΈΜ† для создания ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй, сначала ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ нСсколько страниц, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ смогут Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ собствСнныС Π΄Π°Π½Π½Ρ‹Π΅.

Π£ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΈΜ† появится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹, Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ записи ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ записи, сдСланныС Ρ€Π°Π½Π΅Π΅.

Π’ настоящСС врСмя Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° административном сайтС.

Однако Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° административном сайтС явно Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, поэтому ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ срСдствами построСния Ρ„ΠΎΡ€ΠΌ Django для создания страниц, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ смогут Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅ΠΌ

НачнСм с возмоТности создания Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅ΠΌ. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ Π½Π° Π±Π°Π·Π΅ Ρ„ΠΎΡ€ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ практичСски Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Ρ‚Π΅ страницы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΡƒΠΆΠ΅ строили Ρ€Π°Π½Π΅Π΅:

  • опрСдСляСтС URL, ΠΏΠΈΡˆΠ΅Ρ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ прСдставлСния ΠΈ создаСтС шаблон. ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ β€” Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ модуля forms.py, содСрТащСго Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ModelForm

Π›ΡŽΠ±Π°Ρ страница, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΈΜ† ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, являСтся Ρ„ΠΎΡ€ΠΌΠΎΠΈΜ†, Π΄Π°ΠΆΠ΅ Ссли Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΈΜ† взгляд ΠΎΠ½Π° Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ Π½Π΅ ΠΏΠΎΡ…ΠΎΠΆΠ°.

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Π²Π²Π΅Π» ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Π° Π½Π΅ врСдоносный ΠΊΠΎΠ΄ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ΄ для Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвСра).

Π—Π°Ρ‚Π΅ΠΌ провСрСнная информация обрабатываСтся ΠΈ сохраняСтся Π² Π½ΡƒΠΆΠ½ΠΎΠΌ мСстС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Django Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ этой Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΈΜ†ΡˆΠΈΠΈΜ† способ построСния Ρ„ΠΎΡ€ΠΌ Π² Django основан Π½Π° использовании класса ModelForm, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΈΜ† автоматичСски строит Ρ„ΠΎΡ€ΠΌΡƒ Π½Π° основании ΠΌΠΎΠ΄Π΅Π»Π΅ΠΈΜ†. Π’Π°ΡˆΠ° пСрвая Ρ„ΠΎΡ€ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ создана Π² Ρ„Π°ΠΈΜ†Π»Π΅ forms.py, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΈΜ† Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с models.py:

Π‘Π½Π°Ρ‡Π°Π»Π° импортируСтся ΠΌΠΎΠ΄ΡƒΠ»ΡŒ forms ΠΈ модСль, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΈΜ† ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ: Topic.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ΡΡ класс с ΠΈΠΌΠ΅Π½Π΅ΠΌ TopicForm, Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΈΜ† ΠΎΡ‚ forms.ModelForm.

ΠŸΡ€ΠΎΡΡ‚Π΅ΠΈΜ†ΡˆΠ°Ρ вСрсия ModelForm состоит ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ класса Meta, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΈΜ† сообщаСт Django, Π½Π° ΠΊΠ°ΠΊΠΎΠΈΜ† ΠΌΠΎΠ΄Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ„ΠΎΡ€ΠΌΠ° ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ поля Π½Π° Π½Π΅ΠΈΜ† Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ.

Π€ΠΎΡ€ΠΌΠ° создаСтся Π½Π° Π±Π°Π·Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Topic, Π° Π½Π° Π½Π΅ΠΈΜ† размСщаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»Π΅ text.

Код ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Django Π½Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ подпись для тСкстового поля.

URL-адрСс для new_topic

URL-адрСс Π½ΠΎΠ²ΠΎΠΉ страницы Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ простым ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ, поэтому послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±Ρ€Π°Π» ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ создания Π½ΠΎΠ²ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹, ΠΎΠ½ направляСтся ΠΏΠΎ адрСсу http://localhost:8000/new_topic/arrow-up-right

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° схСма URL для страницы new_topic, которая добавляСтся Π² learning_logs/urls.py:

Π­Ρ‚Π° схСма URL Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ запросы Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдставлСния new_topic(), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ сСйчас напишСм.

Ѐункция прСдставлСния new_topic()

Ѐункция new_topic() Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π²Π΅ Ρ€Π°Π·Π½Ρ‹Π΅ ситуации:

  • исходныС запросы страницы new_topic (Π² этом случаС Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ пустая Ρ„ΠΎΡ€ΠΌΠ°) ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅.

  • Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° страницу topics

triangle-exclamation

ΠœΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ класс HttpResponseRedirect, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для пСрСнаправлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΊ страницС topics послС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π²Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹.

Π’Π°ΠΊΠΆΠ΅ импортируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ написанная Ρ„ΠΎΡ€ΠΌΠ° TopicForm

Запросы GET ΠΈ POST

ΠŸΡ€ΠΈ построСнии Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈΜ† ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° основных Ρ‚ΠΈΠΏΠ° запросов β€” GET ΠΈ POST. Запросы GET ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для страниц, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ с сСрвСра, Π° запросы POST ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅.

Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ всСх Π½Π°ΡˆΠΈΡ… Ρ„ΠΎΡ€ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ POST.

Ѐункция new_topic() ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ запроса. Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ эту страницу, Π΅Π³ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ отправляСт запрос GET.

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ» ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» Ρ„ΠΎΡ€ΠΌΡƒ, Π΅Π³ΠΎ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ отправляСт запрос POST.

Π’ зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° запроса ΠΌΡ‹ опрСдСляСм, запросил Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡƒΡΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ (запрос GET) ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ (запрос POST).

ΠœΠ΅Ρ‚ΠΎΠ΄ запроса β€” GET ΠΈΠ»ΠΈ POST β€” провСряСтся Π² строкС 9. Если ΠΌΠ΅Ρ‚ΠΎΠ΄ запроса ΠΎΡ‚Π»ΠΈΡ‡Π΅Π½ ΠΎΡ‚ POST, вСроятно, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ запрос GET, поэтому Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΏΡƒΡΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ (Π΄Π°ΠΆΠ΅ Ссли это запрос Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, это всС Ρ€Π°Π²Π½ΠΎ бСзопасно).

ΠœΡ‹ создаСм экзСмпляр TopicForm (строка 11), сохраняСм Π΅Π³ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΈΜ† form ΠΈ отправляСм Ρ„ΠΎΡ€ΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Π² словарС context (строка 19).

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ создании TopicForm Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π»ΠΈΡΡŒ, Django создаСт ΠΏΡƒΡΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, которая заполняСтся ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ запроса POST, выполняСтся Π±Π»ΠΎΠΊ else, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΈΜ† ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π² Ρ„ΠΎΡ€ΠΌΠ΅.

ΠœΡ‹ создаСм экзСмпляр TopicForm (строка 14) ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΅ΠΌΡƒ Π΄Π°Π½Π½Ρ‹Π΅, Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, хранящиСся Π² request.POST

circle-info

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΈΜ† ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ form содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

ΠžΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ нСльзя ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π° (строка 15)

Ѐункция is_valid() провСряСт, Ρ‡Ρ‚ΠΎ всС ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля Π±Ρ‹Π»ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ (всС поля Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ), Π° Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚ΠΈΠΏΠ°ΠΌ ΠΏΠΎΠ»Π΅ΠΈΜ† β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Ρ‚ΠΎ Π΄Π»ΠΈΠ½Π° тСкста мСньшС 200 символов, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ„Π°ΠΈΜ†Π»Π΅ models.py.

АвтоматичСская ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° избавляСт нас ΠΎΡ‚ большого объСма Ρ€Π°Π±ΠΎΡ‚Ρ‹. Если всС Π΄Π°Π½Π½Ρ‹Π΅ Π΄Π΅ΠΈΜ†ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ save() (строка 16), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΈΜ† записываСт Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„ΠΎΡ€ΠΌΡ‹ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ….

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ сохранСны, страницу ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΊΠΈΠ½ΡƒΡ‚ΡŒ. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π²Ρ‹Π·ΠΎΠ² redirect() (строка 17) для пСрСнаправлСния Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Π½Π° страницу topics, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΈΜ† ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π²Π²Π΅Π΄Π΅Π½Π½ΡƒΡŽ ΠΈΠΌ Ρ‚Π΅ΠΌΡƒ Π² ΠΎΠ±Ρ‰Π΅ΠΌ спискС Ρ‚Π΅ΠΌ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ context опрСдСляСтся Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдставлСния (строка 19-20), Π° страница строится Π½Π° Π±Π°Π·Π΅ шаблона new_topic.html, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΈΜ† Π±ΡƒΠ΄Π΅Ρ‚ создан Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ шагС.

Код размСщаСтся Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π»ΡŽΠ±Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² if, ΠΎΠ½ выполняСтся ΠΏΡ€ΠΈ создании пустой Ρ„ΠΎΡ€ΠΌΡ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ отправлСнная Ρ„ΠΎΡ€ΠΌΠ° Π±Ρ‹Π»Π° Π½Π΅Π΄Π΅ΠΈΜ†ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΈΜ†.

ΠΠ΅Π΄Π΅ΠΈΜ†ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ стандартныС сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄Π΅ΠΈΜ†ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π¨Π°Π±Π»ΠΎΠ½ new_topic

Π’Π΅ΠΏΠ΅Ρ€ΡŒ создадим Π½ΠΎΠ²Ρ‹ΠΈΜ† шаблон с ΠΈΠΌΠ΅Π½Π΅ΠΌ new_topic.html для отобраТСния Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданной Ρ„ΠΎΡ€ΠΌΡ‹:

Π­Ρ‚ΠΎΡ‚ шаблон Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ base.html, поэтому ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π°ΠΊΡƒΡŽ ΠΆΠ΅ Π±Π°Π·ΠΎΠ²ΡƒΡŽ структуру, ΠΊΠ°ΠΊ ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ страницы Learning Log.

Π’ строкС 5 опрСдСляСтся Ρ„ΠΎΡ€ΠΌΠ° HTML. АргумСнт action сообщаСт сСрвСру, ΠΊΡƒΠ΄Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠΎΠΈΜ†. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π΄Π°Π½Π½Ρ‹Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдставлСния new_topic(). АргумСнт method ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Ρƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² запросС Ρ‚ΠΈΠΏΠ° POST.

Django ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΈΜ† Ρ‚Π΅Π³ {% csrf_token %} (строка 6) для прСдотвращСния ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ получСния нСсанкционированного доступа ΠΊ сСрвСру (Π°Ρ‚Π°ΠΊΠΈ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ мСТсайтовой ΠΏΠΎΠ΄Π΄Π΅Π»ΠΊΠΎΠΈΜ† запросов).

Π’ строкС 7 отобраТаСтся Ρ„ΠΎΡ€ΠΌΠ°; это наглядный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π»Π΅Π³ΠΊΠΎ Π² Django Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Ρ‚Π°ΠΊΠΈΠ΅ стандартныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹. Π§Ρ‚ΠΎΠ±Ρ‹ автоматичСски ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ всС поля, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для отобраТСния Ρ„ΠΎΡ€ΠΌΡ‹, достаточно Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ {{ form.as_p }}

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ as_p ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Django ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ всС элСмСнты Ρ„ΠΎΡ€ΠΌΡ‹ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π°Π±Π·Π°Ρ†Π΅Π² β€” это простой способ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ отобраТСния Ρ„ΠΎΡ€ΠΌΡ‹.

Django Π½Π΅ создаСт ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… для Ρ„ΠΎΡ€ΠΌ, поэтому ΠΌΡ‹ опрСдСляСм Π΅Π΅ Π² строкС 8

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ссылки Π½Π° страницу new_topic

Π”Π°Π»Π΅Π΅ ссылка Π½Π° страницу new_topic создаСтся Π½Π° страницС topics:

Π Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌ ссылку послС списка ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚Π΅ΠΌ.

Topics

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ Π½ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ нСсколько своих Ρ‚Π΅ΠΌ.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… записСй

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ записи.

ΠœΡ‹ снова ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ URL, напишСм Π½ΠΎΠ²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ шаблон ΠΈ создадим ссылку Π½Π° страницу. Но сначала Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² forms.py Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ класс.

Класс EntryForm

ΠœΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с модСлью Entry, Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с TopicForm:

Π‘Π½Π°Ρ‡Π°Π»Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ import ΠΊ Topic добавляСтся Entry. Новый класс EntryForm наслСдуСт ΠΎΡ‚ forms.ModelForm ΠΈ содСрТит Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс Meta с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΈΜ† ΠΎΠ½ базируСтся, ΠΈ ΠΏΠΎΠ»Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠΎΠ΅ Π½Π° Ρ„ΠΎΡ€ΠΌΡƒ. Полю 'text' снова назначаСтся пустая надпись.

Π’ строкС Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ widgets.

Π’ΠΈΠ΄ΠΆΠ΅Ρ‚ (widget) прСдставляСт собой элСмСнт Ρ„ΠΎΡ€ΠΌΡ‹ HTML: однострочноС ΠΈΠ»ΠΈ многострочноС тСкстовоС ΠΏΠΎΠ»Π΅, Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉΡΡ список ΠΈ Ρ‚. Π΄.

Π’ΠΊΠ»ΡŽΡ‡Π°Ρ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ widgets, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹, Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ Django ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Указывая Django ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ элСмСнт forms.Textarea, ΠΌΡ‹ настраиваСм Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Π²Π²ΠΎΠ΄Π° для поля 'text', Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡˆΠΈΡ€ΠΈΠ½Π° тСкстовой области составляла 80 столбцов вмСсто значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 40. Π£ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π±ΡƒΠ΄Π΅Ρ‚ достаточно мСста для создания ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… записСй.

URL-адрСс для new_entry

НСобходимо Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ topic_id Π² URL-адрСс для создания Π½ΠΎΠ²ΠΎΠΉ записи, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ запись Π΄ΠΎΠ»ΠΆΠ½Π° Π°ΡΡΠΎΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠΎΠΉ.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит URL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ добавляСм Π² learning_logs/urls.py:

Π­Ρ‚Π° схСма URL соотвСтствуСт Π»ΡŽΠ±ΠΎΠΌΡƒ URL-адрСсу Π² Ρ„ΠΎΡ€ΠΌΠ΅ http://localhost:8000/new_entry/id/arrow-up-right, Π³Π΄Π΅ id β€” число, Ρ€Π°Π²Π½ΠΎΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ Ρ‚Π΅ΠΌΡ‹. Код int:topic_id Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ сохраняСт Π΅Π³ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ topic_id.

ΠŸΡ€ΠΈ запросС URL-адрСса, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ этой схСмС, Django ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ запрос ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π΅ΠΌΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдставлСния new_entry().

Ѐункция прСдставлСния new_entry()

Ѐункция прСдставлСния new_entry ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ добавлСния Π½ΠΎΠ²ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² Ρ„Π°ΠΉΠ» views.py:

ΠœΡ‹ обновляСм ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ import ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π² Π½Π΅Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданный класс EntryForm.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ new_entry() содСрТит ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ topic_id для сохранСния ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ значСния ΠΈΠ· URL. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ‚Π΅ΠΌΡ‹ понадобится для отобраТСния страницы ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΡ‹, поэтому ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ topic_id для получСния ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚Π΅ΠΌΡ‹ (строка 9)

Π’ строкС 10 провСряСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ запроса: POST ΠΈΠ»ΠΈ GET. Π‘Π»ΠΎΠΊ if выполняСтся для запроса GET, ΠΈ ΠΌΡ‹ создаСм пустой экзСмпляр EntryForm.

Для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° запроса POST ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅, создавая экзСмпляр EntryForm, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΈΜ† Π΄Π°Π½Π½Ρ‹ΠΌΠΈ POST ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° request. Π—Π°Ρ‚Π΅ΠΌ провСряСтся ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΡ‹. Если Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ topic ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° записи ΠΏΠ΅Ρ€Π΅Π΄ сохранСниСм Π΅Π³ΠΎ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ save() ΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ commit=False для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΈΜ† ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ записи ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² new_entry, Π½Π΅ сохраняя ΠΏΠΎΠΊΠ° Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

ΠœΡ‹ присваиваСм Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρƒ topic ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° new_entry Ρ‚Π΅ΠΌΡƒ, ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½ΡƒΡŽ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, послС Ρ‡Π΅Π³ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ save() Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ запись сохраняСтся Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ассоциированной Ρ‚Π΅ΠΌΠΎΠΈΜ†

Π’Ρ‹Π·ΠΎΠ² redirect() Π² (строкС 20) ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° β€” имя прСдставлСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ пСрСдаСтся ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅, ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдставлСния.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС происходит ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ topic(), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΈΜ† Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ topic_id.

Π’Ρ‹Π·ΠΎΠ² пСрСнаправляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° страницу Ρ‚Π΅ΠΌΡ‹, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΈΜ† Π±Ρ‹Π»Π° создана запись, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄ΠΈΡ‚ Π½ΠΎΠ²ΡƒΡŽ запись Π² спискС записСй.

Π’ ΠΊΠΎΠ½Ρ†Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ создаСтся ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ context, Π° страница строится Π½Π° Π±Π°Π·Π΅ шаблона new_entry.html

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ выполняСтся для пустой Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈΠ»ΠΈ для ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠΈΜ† Ρ„ΠΎΡ€ΠΌΡ‹, которая Π±Ρ‹Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠ°ΠΊ Π½Π΅Π΄Π΅ΠΈΜ†ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ.

Π¨Π°Π±Π»ΠΎΠ½ new_entry

Π¨Π°Π±Π»ΠΎΠ½ new_entry ΠΏΠΎΡ…ΠΎΠΆ Π½Π° шаблон new_topic:

Π’ Π½Π°Ρ‡Π°Π»Π΅ страницы выводится Ρ‚Π΅ΠΌΠ° (строка 3), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Π² ΠΊΠ°ΠΊΡƒΡŽ Ρ‚Π΅ΠΌΡƒ добавляСтся новая запись. Π’Π΅ΠΌΠ° Ρ‚Π°ΠΊΠΆΠ΅ слуТит ссылкой Π½Π° Π³Π»Π°Π²Π½ΡƒΡŽ страницу этой Ρ‚Π΅ΠΌΡ‹.

АргумСнт action Ρ„ΠΎΡ€ΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ topic_id ΠΈΠ· URL, Ρ‡Ρ‚ΠΎΠ±Ρ‹ функция прСдставлСния ΠΌΠΎΠ³Π»Π° ΡΠ²ΡΠ·Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ запись с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΈΜ† Ρ‚Π΅ΠΌΠΎΠΈΜ† (строка 5). Π’ ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠΌ этот шаблон ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ отличаСтся ΠΎΡ‚ new_topic.html

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ссылки Π½Π° страницу new_entry

Π—Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ссылку Π½Π° страницу new_entry Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС Ρ‚Π΅ΠΌΡ‹:

Бсылка добавляСтся ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ записСй, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ записи являСтся самым частым дСйствиСм Π½Π° этой страницС.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅ΠΌ ΠΈ Π½ΠΎΠ²Ρ‹Ρ… записСй ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ‚Π΅ΠΌΠ΅. ΠžΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ страницу new_entry, Π΄ΠΎΠ±Π°Π²ΠΈΠ² нСсколько записСй для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· созданных Π²Π°ΠΌΠΈ Ρ‚Π΅ΠΌ.

Add new entry

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ записСй

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ создадим страницу, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ смогут Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π½Π΅Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ записи.

URL-адрСс для edit_entry

Π’ URL-адрСсС страницы Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ записи.

Π’ Ρ„Π°ΠΉΠ» learning_logs/urls.py для этого вносятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ измСнСния:

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Π² URL (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, http://localhost:8000/edit_entry/1/arrow-up-right), сохраняСтся Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ entry_id. Π‘Ρ…Π΅ΠΌΠ° URL отправляСт запросы, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ этому Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдставлСния edit_entry()

Ѐункция прСдставлСния edit_entry()

Когда страница edit_entry ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ запрос GET, edit_entry() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒ для рСдактирования записи. ΠŸΡ€ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ запроса POST с ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ записью страница сохраняСт ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΉ тСкст Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…:

Π‘Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ модСль Entry.

Π’ строкС 9 ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ записи, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΈΜ† ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ…ΠΎΡ‡Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ, ΠΈ Ρ‚Π΅ΠΌΡƒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с этой записью.

Π’ Π±Π»ΠΎΠΊΠ΅ if, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΈΜ† выполняСтся для запроса GET, создаСтся экзСмпляр EntryForm с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ instance=entry. Π­Ρ‚ΠΎΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Django ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ, Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΈΜ† ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° записи. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄ΠΈΡ‚ свои ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ….

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ запроса POST ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ instance=entry ΠΈ data=request.POST Они ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Django ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° основании ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° записи, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΈΜ† Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ· request.POST. Π—Π°Ρ‚Π΅ΠΌ провСряСтся ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΡ‹. Если Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹, слСдуСт Π²Ρ‹Π·ΠΎΠ² save() Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π”Π°Π»Π΅Π΅ происходит ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° страницу Ρ‚Π΅ΠΌΡ‹, ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄ΠΈΡ‚ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΈΜ† ΠΈΠΌ записи.

Если отобраТаСтся исходная Ρ„ΠΎΡ€ΠΌΠ° для рСдактирования записи ΠΈΠ»ΠΈ Ссли отправлСнная Ρ„ΠΎΡ€ΠΌΠ° Π½Π΅Π΄Π΅ΠΈΜ†ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°, создаСтся ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ context, Π° страница строится Π½Π° Π±Π°Π·Π΅ шаблона edit_entry.html

Π¨Π°Π±Π»ΠΎΠ½ edit_entry

Π¨Π°Π±Π»ΠΎΠ½ edit_entry.html ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° new_entry.html:

Π’ строкС 5 Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ action отправляСт Ρ„ΠΎΡ€ΠΌΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ edit_entry() для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ записи Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² Ρ‚Π΅Π³ {% url %}, Ρ‡Ρ‚ΠΎΠ±Ρ‹ функция прСдставлСния ΠΌΠΎΠ³Π»Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ записи.

Кнопка ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… создаСтся с тСкстом, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ сохраняСт измСнСния, Π° Π½Π΅ создаСт Π½ΠΎΠ²ΡƒΡŽ запись (строка 8).

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ссылки Π½Π° страницу edit_entry

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ссылку Π½Π° страницу edit_entry Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ Π½Π° страницС со списком Ρ‚Π΅ΠΌ:

ПослС Π΄Π°Ρ‚Ρ‹ ΠΈ тСкста ΠΊΠ°ΠΆΠ΄ΠΎΠΈΜ† записи Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ссылка рСдактирования. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΈΜ† Ρ‚Π΅Π³ {% url %} для опрСдСлСния схСмы URL ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΠΎΠΈΜ† схСмы edit_entry ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΈΜ† записи Π² Ρ†ΠΈΠΊΠ»Π΅ (entry.id).

ВСкст ссылки "edit entry" выводится послС ΠΊΠ°ΠΆΠ΄ΠΎΠΈΜ† записи Π½Π° страницС.

Edit entry

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ создадим систСму рСгистрации ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ люди ΠΌΠΎΠ³Π»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΡ‡Π΅Ρ‚Π½ΡƒΡŽ запись, Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ сСанс Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Для всСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, относящСйся ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ, Π±ΡƒΠ΄Π΅Ρ‚ создано ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ слСгка ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ модСль Topic, Ρ‡Ρ‚ΠΎΠ±Ρ‹ каТдая Ρ‚Π΅ΠΌΠ° Π±Ρ‹Π»Π° связана с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ users

НачнСм с создания Π½ΠΎΠ²ΠΎΠ³ΠΎ прилоТСния users ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ startapp:

ΠŸΠ΅Ρ€Π²Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° создаСт Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΈΠΌΠ΅Π½Π΅ΠΌ users, структура ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ повторяСт структуру ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ² прилоТСния learning_logs.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² settings.py

НовоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² settings.py:

Django Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ users Π² ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ URL-адрСсов ΠΈΠ· users

Π—Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ Ρ„Π°ΠΉΠ» urls.py, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π²ΠΊΠ»ΡŽΡ‡Π°Π» URL-адрСса, написанныС для прилоТСния users:

Π”ΠΎΠ±Π°Π²ΠΈΠΌ строку для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ„Π°ΠΉΠ»Π° urls.py ΠΈΠ· users. Π­Ρ‚Π° строка Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΠΎΠΌΡƒ URL-адрСсу, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅ΠΌΡƒΡΡ со слова users, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ http://localhost:8000/users/login/arrow-up-right

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° Π²Ρ…ΠΎΠ΄Π°

НачнСм с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ страницы Π²Ρ…ΠΎΠ΄Π°. ΠœΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ стандартным прСдставлСниСм login, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдоставляСт Django, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ шаблон URL выглядит Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Π°Ρ‡Π΅.

circle-exclamation

Π‘Π½Π°Ρ‡Π°Π»Π° импортируСтся функция path, Π° Π·Π°Ρ‚Π΅ΠΌ функция include для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… URL-адрСсов ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Django.

Π­Ρ‚ΠΈ URL-адрСса ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ схСмы, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ 'login' ΠΈ 'logout'. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΈΜ† app_name присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 'users', Ρ‡Ρ‚ΠΎΠ±Ρ‹ инфраструктура Django ΠΌΠΎΠ³Π»Π° ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ эти URL-адрСса ΠΎΡ‚ URL-адрСсов, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΠΌ прилоТСниям. (строка 4)

Π”Π°ΠΆΠ΅ URL-адрСса ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, прСдоставляСмыС Django, ΠΏΡ€ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ Π² Ρ„Π°ΠΈΜ†Π» urls.py прилоТСния users Π±ΡƒΠ΄ΡƒΡ‚ доступны Ρ‡Π΅Ρ€Π΅Π· пространство ΠΈΠΌΠ΅Π½ users.

Π‘Ρ…Π΅ΠΌΠ° страницы Π²Ρ…ΠΎΠ΄Π° соотвСтствуСт URL http://localhost:8000/users/login/arrow-up-right (строка 7)

Когда Django Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ этот URL-адрСс, слово users ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ слСдуСт ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ users/urls.py, Π° login сообщаСт ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ запросы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ login ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π¨Π°Π±Π»ΠΎΠ½ login

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ страницу Π²Ρ…ΠΎΠ΄Π°, Django ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ своС прСдставлСниС login ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π½ΠΎ ΠΌΡ‹ всС Ρ€Π°Π²Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ шаблон для этой страницы.

АутСнтификационныС прСдставлСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΡ‰ΡƒΡ‚ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ registration, поэтому Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ этот ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.

Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ learning_log/users/ создайтС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΈΠΌΠ΅Π½Π΅ΠΌ templates, Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ β€” Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΠΈΠΌΠ΅Π½Π΅ΠΌ registration. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит шаблон login.html, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² learning_log/users/templates/registration/:

Π¨Π°Π±Π»ΠΎΠ½ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ base.html, Ρ‡Ρ‚ΠΎΠ±Ρ‹ страница Π²Ρ…ΠΎΠ΄Π° ΠΏΠΎ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΡŽ ΠΈ повСдСнию Π±Ρ‹Π»Π° ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ страницы сайта.

circle-exclamation

Если Ρƒ Ρ„ΠΎΡ€ΠΌΡ‹ установлСн Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ errors, выводится сообщСниС ΠΎΠ± ошибкС (строка 3). Π’ Π½Π΅ΠΌ говорится, Ρ‡Ρ‚ΠΎ комбинация ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ пароля Π½Π΅ соотвСтствуСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, хранящСйся Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ прСдставлСниС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Ρ„ΠΎΡ€ΠΌΡƒ, поэтому Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ action присваиваСтся URL страницы Π²Ρ…ΠΎΠ΄Π° (строка 6). ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ отправляСт Ρ„ΠΎΡ€ΠΌΡƒ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ вывСсти Ρ„ΠΎΡ€ΠΌΡƒ (строка 8) ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (строка 9).

Π’ строкС 10 Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ скрытый элСмСнт Ρ„ΠΎΡ€ΠΌΡ‹ 'next', Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ value сообщаСт Django, ΠΊΡƒΠ΄Π° ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ…ΠΎΠ΄Π°. Π’ нашСм случаС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ возвращаСтся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° домашнюю страницу.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ссылки Π½Π° страницу Π²Ρ…ΠΎΠ΄Π°

Π”ΠΎΠ±Π°Π²ΠΈΠΌ ссылку Π½Π° страницу Π²Ρ…ΠΎΠ΄Π° Π² base.html, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° присутствовала Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС. Бсылка Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΡˆΠ΅Π» ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ Π²Ρ…ΠΎΠ΄Π°, поэтому ΠΎΠ½Π° вкладываСтся Π² Ρ‚Π΅Π³:

Π’ систСмС Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Django Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шаблонС доступна пСрСмСнная user, которая всСгда ΠΈΠΌΠ΅Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ is_authenticated: Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Ρ€Π°Π²Π΅Π½ True, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΡˆΠ΅Π» ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, ΠΈ False Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС. Π­Ρ‚ΠΎ позволяСт Π²Π°ΠΌ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ сообщСния для ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… ΠΈ Π½Π΅ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΈΜ†.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ привСтствиС для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ²ΡˆΠΈΡ… Π²Ρ…ΠΎΠ΄ (строка 5).

Π£ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ устанавливаСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ username, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчит Π»ΠΈΡ‡Π½ΡƒΡŽ настройку привСтствия ΠΈ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ…ΠΎΠ΄ Π±Ρ‹Π» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ (строка 6).

Π’ строкС 8 выводится ссылка Π½Π° страницу Π²Ρ…ΠΎΠ΄Π° для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ.

ИспользованиС страницы Π²Ρ…ΠΎΠ΄Π°

УчСтная запись ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΡƒΠΆΠ΅ создана. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ввСсти Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ посмотрим, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ страница.

ΠžΡ‚ΠΊΡ€ΠΎΠΈΜ†Ρ‚Π΅ страницу http://localhost:8000/admin/arrow-up-right

Если Π²Ρ‹ всС Π΅Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ администратора, Π½Π°ΠΈΜ†Π΄ΠΈΡ‚Π΅ ссылку Π²Ρ‹Ρ…ΠΎΠ΄Π° Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ ΠΈ Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° Π½Π΅ΠΈΜ†.

logout

ПослС Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅ΠΈΜ†Π΄ΠΈΡ‚Π΅ ΠΏΠΎ адрСсу http://localhost:8000/users/login/arrow-up-right

На экранС Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ страница Π²Ρ…ΠΎΠ΄Π°. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π½Π΅Π΅, ΠΈ Π²Ρ‹ снова Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π° страницС со списком.

Π’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ страницы Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ сообщСниС с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π’Ρ‹Ρ…ΠΎΠ΄

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· прилоТСния.

ΠœΡ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π² base.html ссылку для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΡ€ΠΈ Ρ‰Π΅Π»Ρ‡ΠΊΠ΅ Π½Π° этой ссылкС открываСтся страница, ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‰Π°Ρ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄ Π±Ρ‹Π» Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ссылки для Π²Ρ‹Ρ…ΠΎΠ΄Π°

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ссылку для Π²Ρ‹Ρ…ΠΎΠ΄Π°. ΠœΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Π΅ Π² Ρ„Π°ΠΉΠ» base.html, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Π±Ρ‹Π»Π° доступна Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС, ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ссылка Π±Ρ‹Π»Π° Π²ΠΈΠ΄Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ, ΡƒΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ²ΡˆΠΈΠΌ Π²Ρ…ΠΎΠ΄:

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ схСмС URL для Π²Ρ‹Ρ…ΠΎΠ΄Π° назначаСтся имя 'logout'.

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° подтвСрТдСния Π²Ρ‹Ρ…ΠΎΠ΄Π°

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄ ΠΏΡ€ΠΎΡˆΠ΅Π» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, поэтому прСдставлСниС ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π²Ρ‹Ρ…ΠΎΠ΄Π° строит страницу Π½Π° Π±Π°Π·Π΅ шаблона logged_out.html, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ сСйчас создадим.

Он прСдставляСт ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ страницу с ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹ΡˆΠ΅Π» ΠΈΠ· сСанса Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ templates/registration β€” Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±Ρ‹Π» сохранСн Ρ„Π°ΠΉΠ» login.html:

logged out

НичСго Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π½Π° этой страницС Π±Ρ‹Ρ‚ΡŒ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ base.html прСдоставляСт ссылки Π½Π° домашнюю страницу ΠΈ страницу Π²Ρ…ΠΎΠ΄Π° Π½Π° случай, Ссли ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΈΠ· этих страниц.

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° рСгистрации

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ построим страницу для рСгистрации Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Для этой Ρ†Π΅Π»ΠΈ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ класс Django UserCreationForm, Π½ΠΎ напишСм ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ прСдставлСния ΠΈ шаблон.

URL-адрСс рСгистрации

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ прСдоставляСт шаблон URL для страницы рСгистрации β€” Ρ‚Π°ΠΊΠΆΠ΅ Π² Ρ„Π°ΠΉΠ»Π΅ users/urls.py:

ΠœΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ views ΠΈΠ· users, этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ пишСм собствСнноС прСдставлСниС для страницы рСгистрации.

Π¨Π°Π±Π»ΠΎΠ½ соотвСтствуСт URL http://localhost:8000/users/register/arrow-up-right ΠΈ отправляСт запросы Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ register(), ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ сСйчас напишСм.

Ѐункция прСдставлСния register()

Ѐункция прСдставлСния register() Π΄ΠΎΠ»ΠΆΠ½Π° вывСсти ΠΏΡƒΡΡ‚ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ рСгистрации ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ запросС страницы рСгистрации, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ рСгистрации ΠΏΡ€ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ΅ Π΄Π°Π½Π½Ρ‹Ρ….

Если рСгистрация ΠΏΡ€ΠΎΡˆΠ»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, функция Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π²Ρ…ΠΎΠ΄ для Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² users/views.py:

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ render() ΠΈ redirect(). Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ login() для выполнСния Π²Ρ…ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Ссли рСгистрационная информация Π²Π΅Ρ€Π½Π°.

Π’Π°ΠΊΠΆΠ΅ импортируСтся класс UserCreationForm ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ register() ΠΌΡ‹ провСряСм, ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π»ΠΈ функция Π½Π° запрос POST. Если Π½Π΅Ρ‚, создаСтся экзСмпляр UserCreationForm, Π½Π΅ содСрТащий исходных Π΄Π°Π½Π½Ρ‹Ρ… (строка 10).

Π’ случаС ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° запрос POST создаСтся экзСмпляр UserCreationForm, основанный Π½Π° ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (строка 13).

ΠœΡ‹ провСряСм, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π²Π΅Ρ€Π½Ρ‹ (строка 14). Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ‡Ρ‚ΠΎ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ содСрТит ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ символы, ΠΏΠ°Ρ€ΠΎΠ»ΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‚, Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ пытаСтся Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ врСдоносныС конструкции Π² ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Если ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π²Π΅Ρ€Π½Ρ‹, ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ save() Ρ„ΠΎΡ€ΠΌΡ‹ для сохранСния ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ Ρ…Π΅ΡˆΠ° пароля Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (строка 15).

ΠœΠ΅Ρ‚ΠΎΠ΄ save() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ созданный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΈΜ† сохраняСтся Π² new_user.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ информация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π±ΡƒΠ΄Π΅Ρ‚ сохранСна, ΠΌΡ‹ выполняСм Π²Ρ…ΠΎΠ΄, этот процСсс состоит ΠΈΠ· Π΄Π²ΡƒΡ… шагов: сначала вызываСтся функция login() с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ request ΠΈ new_user (строка 17), которая создаСт Π΄Π΅ΠΈΜ†ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΈΜ† сСанс для Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. НаконСц, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ пСрСнаправляСтся Π½Π° домашнюю страницу (строка 18), Π³Π΄Π΅ привСтствиС Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ сообщаСт ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ рСгистрация ΠΏΡ€ΠΎΡˆΠ»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

Π’ ΠΊΠΎΠ½Ρ†Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ строится страница, которая Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈΠ±ΠΎ пустой Ρ„ΠΎΡ€ΠΌΠΎΠΈΜ†, Π»ΠΈΠ±ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠΈΜ† Ρ„ΠΎΡ€ΠΌΠΎΠΈΜ†, содСрТащСй Π½Π΅Π΄Π΅ΠΈΜ†ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π¨Π°Π±Π»ΠΎΠ½ рСгистрации

Π¨Π°Π±Π»ΠΎΠ½ страницы рСгистрации ΠΏΠΎΡ…ΠΎΠΆ Π½Π° шаблон страницы Π²Ρ…ΠΎΠ΄Π°. ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π±Ρ‹Π» сохранСн Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ с login.html:

ΠœΡ‹ снова ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ as_p, Ρ‡Ρ‚ΠΎΠ±Ρ‹ инфраструктура Django ΠΌΠΎΠ³Π»Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ всС поля Ρ„ΠΎΡ€ΠΌΡ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ всС сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Ссли Ρ„ΠΎΡ€ΠΌΠ° Π±Ρ‹Π»Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π° Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ссылки Π½Π° страницу рСгистрации

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг β€” Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° для Π²Ρ‹Π²ΠΎΠ΄Π° ссылки Π½Π° страницу рСгистрации для любого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π΅Ρ‰Π΅ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ²ΡˆΠ΅Π³ΠΎ Π²Ρ…ΠΎΠ΄:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ²ΡˆΠΈΠ΅ Π²Ρ…ΠΎΠ΄, ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ привСтствиС ΠΈ ссылку для Π²Ρ‹Ρ…ΠΎΠ΄Π°.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ видят ссылку Π½Π° страницу рСгистрации ΠΈ ссылку для Π²Ρ…ΠΎΠ΄Π°.

circle-check
circle-info

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ доступ ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ страницам Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ страницы Π±Ρ‹Π»ΠΈ доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для зарСгистрированных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ каТдая Ρ‚Π΅ΠΌΠ° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Π»Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.

circle-info

Вакая систСма рСгистрации позволяСт Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй Learning Log. Однако ΠΌΠ½ΠΎΠ³ΠΈΠ΅ систСмы Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΠ» свою заявку, отправляя сообщСниС элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ· SMS. ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ Π² систСмС Π±ΡƒΠ΄Π΅Ρ‚ создано мСньшС спамСрских ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй, Ρ‡Π΅ΠΌ Π² ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ систСмС ΠΈΠ· нашСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Но ΠΏΠΎΠΊΠ° ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ учимся ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ прилоТСния, Π²ΠΏΠΎΠ»Π½Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΉ систСмС рСгистрации Π²Ρ€ΠΎΠ΄Π΅ нашСй.

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΅ΠΌΡƒ Π»ΠΈΡ‡Π½ΠΎ. ΠœΡ‹ создадим систСму, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Ρ‚Π΅ ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ доступ ΠΊ страницам, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΌΠΈ Π΅ΠΌΡƒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ модСль Topic, Ρ‡Ρ‚ΠΎΠ±Ρ‹ каТдая Ρ‚Π΅ΠΌΠ° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Π»Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. ΠŸΡ€ΠΈ этом Ρ‚Π°ΠΊΠΆΠ΅ автоматичСски Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с записями, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ каТдая запись ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΈΜ† Ρ‚Π΅ΠΌΠ΅. НачнСм с ограничСния доступа ΠΊ страницам.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа с использованиСм @login_required

Django позволяСт Π»Π΅Π³ΠΊΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ страницам для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ²ΡˆΠΈΡ… Π²Ρ…ΠΎΠ΄, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π° @login_required. Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ (decorator) прСдставляСт собой Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΡƒΡŽ нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡƒΡŽ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΈ Π²Π»ΠΈΡΡŽΡ‰ΡƒΡŽ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΊ страницам Ρ‚Π΅ΠΌ

КаТдая Ρ‚Π΅ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, поэтому Ρ‚ΠΎΠ»ΡŒΠΊΠΎ зарСгистрированныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ смогут Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ страницы Ρ‚Π΅ΠΌ. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π² learning_logs/views.py:

Π‘Π½Π°Ρ‡Π°Π»Π° импортируСтся функция login_required(). ΠœΡ‹ примСняСм login_ required() ΠΊΠ°ΠΊ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдставлСния topics(), для Ρ‡Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ login_required() ставится Π·Π½Π°ΠΊ @ β€” ΠΎΠ½ сообщаСт Python, Ρ‡Ρ‚ΠΎ этот ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π΅Π΄ ΠΊΠΎΠ΄ΠΎΠΌ topics()

Код login_required() провСряСт, вошСл Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π² систСму, ΠΈ Django запускаСт ΠΊΠΎΠ΄ topics() Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этого условия. Если ΠΆΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» Π²Ρ…ΠΎΠ΄, ΠΎΠ½ пСрСнаправляСтся Π½Π° страницу Π²Ρ…ΠΎΠ΄Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ внСсти измСнСния settings.py ΠΈ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ Django, Π³Π΄Π΅ ΠΈΡΠΊΠ°Ρ‚ΡŒ страницу Π²Ρ…ΠΎΠ΄Π°.

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΈΜ† Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π² самый ΠΊΠΎΠ½Π΅Ρ† settings.py:

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π½Π΅ ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠΈΠΈΜ† ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ, Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ страницу, Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΡƒΡŽ Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ @login_required, Django отправляСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° URL-адрСс, опрСдСляСмый LOGIN_URL Π² settings.py

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эту Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚Π΅ сСанс Π² Π»ΡŽΠ±ΠΎΠΈΜ† ΠΈΠ· своих ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй ΠΈ Π²Π΅Ρ€Π½ΠΈΡ‚Π΅ΡΡŒ Π½Π° домашнюю страницу. Π©Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ссылкС Topics, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ вас Π½Π° страницу Π²Ρ…ΠΎΠ΄Π°. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π²Ρ…ΠΎΠ΄ с Π»ΡŽΠ±ΠΎΠΈΜ† ΠΈΠ· своих ΡƒΡ‡Π΅Ρ‚- Π½Ρ‹Ρ… записСй, Π½Π° Π΄ΠΎΠΌΠ°ΡˆΠ½Π΅ΠΈΜ† страницС снова Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ссылкС Topics. На этот Ρ€Π°Π· Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ доступ ΠΊ страницС со списком Ρ‚Π΅ΠΌ.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа Π² Learning Log

Django ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΊ страницам, Π½ΠΎ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ страницы слСдуСт Π·Π°Ρ‰ΠΈΡ‰Π°Ρ‚ΡŒ. Π›ΡƒΡ‡ΡˆΠ΅ сначала ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΊ ΠΊΠ°ΠΊΠΈΠΌ страницам ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΈΜ† доступ, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… страниц. Π‘Π½ΡΡ‚ΡŒ излишниС ограничСния нСслоТно, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ это ΠΊΡƒΠ΄Π° ΠΌΠ΅Π½Π΅Π΅ рискованно, Ρ‡Π΅ΠΌ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π΄Π΅ΠΈΜ†ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΆΠ½Ρ‹Π΅ страницы Π±Π΅Π· ограничСния доступа.

Π’ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Learning Log ΠΌΡ‹ оставим Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΈΜ† доступ ΠΊ Π΄ΠΎΠΌΠ°ΡˆΠ½Π΅ΠΈΜ† страницС, страницС рСгистрации ΠΈ страницС Π²Ρ‹Ρ…ΠΎΠ΄Π°. Доступ ΠΊΠΎ всСм ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ страницам Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ выглядит Ρ„Π°ΠΈΜ†Π» learning_logs/views.py с Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ @login_required, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ, ΠΊΡ€ΠΎΠΌΠ΅ index():

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ любой ΠΈΠ· этих страниц Π±Π΅Π· выполнСния Π²Ρ…ΠΎΠ΄Π°: Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° страницу Π²Ρ…ΠΎΠ΄Π°.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ Π½Π΅ смоТСтС ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ ссылкам Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ страницы, ΠΊΠ°ΠΊ new_topic.

Но Ссли ввСсти URL http://localhost:8000/new_topic/arrow-up-right, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ Π½Π° страницу Π²Ρ…ΠΎΠ΄Π°.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠΌ доступ ΠΊΠΎ всСм URL-адрСсам, связанным с Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

ИзмСним модСль Topic ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ внСшнСго ΠΊΠ»ΡŽΡ‡Π° ΠΊ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ. ПослС этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ провСсти ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. НаконСц, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдставлСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π½ΠΈΡ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π»ΠΈΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π°Π½Π½Ρ‹Π΅, связанныС с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

ИзмСнСниС модСли Topic

Π’ Ρ„Π°ΠΉΠ»Π΅ models.py ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ всСго Π΄Π²Π΅ строки:

Π‘Π½Π°Ρ‡Π°Π»Π° модСль User импортируСтся ΠΈΠ· django.contrib.auth. Π—Π°Ρ‚Π΅ΠΌ Π² Topic добавляСтся ΠΏΠΎΠ»Π΅ owner, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ внСшнСго ΠΊΠ»ΡŽΡ‡Π° ΠΊ ΠΌΠΎΠ΄Π΅Π»ΠΈ User. Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ удаляСтся, всС Ρ‚Π΅ΠΌΡ‹, связанныС с этим ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Django ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π½Π΅ΠΈΜ† Ρ…Ρ€Π°Π½ΠΈΠ»Π°ΡΡŒ связь ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΈΜ† Ρ‚Π΅ΠΌΠΎΠΈΜ† ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Для выполнСния ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Django Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ, с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ связана каТдая ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Ρ‚Π΅ΠΌΠ°. ΠŸΡ€ΠΎΡ‰Π΅ всСго ΡΠ²ΡΠ·Π°Ρ‚ΡŒ всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹ с ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Но для этого сначала Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ этого ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΈΜ†, созданных Π΄ΠΎ настоящСго ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°. ЗапуститС сСанс ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ Django ΠΈ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Django Shell

Π’ строкС 6 Π² сСанс ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ импортируСтся модСль User. ПослС этого ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ всС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, созданныС Π΄ΠΎ настоящСго ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° (строка 7). Π’ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… пСрСчислСны Π΄Π²Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ: admin ΠΈ user1.

Π’ (строках 9-10) пСрСбираСтся список ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΈΜ†, ΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ выводится Π΅Π³ΠΎ имя ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. Когда Django спросит, с ΠΊΠ°ΠΊΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· этих ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΡ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Зная Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, ΠΌΠΎΠΆΠ½ΠΎ провСсти ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Когда Π²Ρ‹ это Π΄Π΅Π»Π°Π΅Ρ‚Π΅, Python ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ модСль Topic с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² models.py Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сообщит, ΠΊΠ°ΠΊ слСдуСт ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ. Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ 1:

Π‘Π½Π°Ρ‡Π°Π»Π° выполняСтся ΠΊΠΎΠΌΠ°Π½Π΄Π° makemigrations (строка 1).

Π’ Π΅Π΅ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (строка 2) Django сообщаСт, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ пытаСмся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ (значСния ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ ΠΎΡ‚ null) Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ модСль (topic) Π±Π΅Π· указания значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Django прСдоставляСт Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° (строки 3-5):

  • ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈΠ±ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ прямо сСйчас

  • Π»ΠΈΠ±ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² models.py

Π’ строкС 6 выбираСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΈΜ† Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

Π’ΠΎΠ³Π΄Π° Django Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (строка 7).

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹ с исходным административным ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ admin, я Π²Π²Π΅Π» Π² строкС 10 ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ 1.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ любого ΠΈΠ· созданных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΈΜ†, ΠΎΠ½ Π½Π΅ обязан Π±Ρ‹Ρ‚ΡŒ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

Django ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΈ создаСт Ρ„Π°ΠΈΜ†Π» ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ 0003_topic_owner.py, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‰ΠΈΠΈΜ† ΠΏΠΎΠ»Π΅ owner Π² модСль Topic.

chevron-rightАвтоматичСски созданный Ρ„Π°ΠΈΜ†Π» ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈhashtag

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ провСсти ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ срСдС:

Django примСняСт Π½ΠΎΠ²ΡƒΡŽ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ OK

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ миграция сработала Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΈ оТидалось, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΈΜ† ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΈΜ†:

ПослС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Topic ΠΈΠ· learning_logs.models (строка 6) ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹, Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ ΠΈ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ½Π° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ (строки 7-8)

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, сСйчас каТдая Ρ‚Π΅ΠΌΠ° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ admin

circle-info

Если ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ошибка, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π²Ρ‹ΠΉΡ‚ΠΈ ΠΈΠ· ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π΅ Π·Π°Π½ΠΎΠ²ΠΎ

circle-info

ВмСсто ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ просто ΡΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ содСрТимоС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ΠΏΠΎΡ‚Π΅Ρ€Π΅ всСх ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. ПолСзно Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π±Π΅Π· Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ цСлостности Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ с Π½ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

python manage.py flush для ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ построСния структуры Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΌ придСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π° всС Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ потСряны.

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ доступа ΠΊ Ρ‚Π΅ΠΌΠ°ΠΌ

Π’ настоящСС врСмя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ²ΡˆΠΈΠΈΜ† Π²Ρ…ΠΎΠ΄, Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ всС Ρ‚Π΅ΠΌΡ‹ нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΠΎΠΈΜ† ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΈΜ† записью ΠΎΠ½ вошСл. БСйчас ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΈΜ† ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΈΠ΄Π΅Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Π΅ΠΌΡƒ Ρ‚Π΅ΠΌΡ‹.

ВнСситС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ topics() Π² Ρ„Π°ΠΈΜ†Π»Π΅ views.py:

Если ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» Π²Ρ…ΠΎΠ΄, Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ запроса устанавливаСтся Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ request.user с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅.

Π€Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° Topic.objects.filter(owner=request.user) ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Django ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Topic, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ owner соотвСтствуСт Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.

circle-info

Π’Π°ΠΊ ΠΊΠ°ΠΊ способ отобраТСния Π½Π΅ измСняСтся, ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ шаблон для страницы Ρ‚Π΅ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ этот способ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ Π²Ρ…ΠΎΠ΄ Π² качСствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ связаны всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹, ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΊ страницС со списком Ρ‚Π΅ΠΌ.

На Π½Π΅ΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ всС Ρ‚Π΅ΠΌΡ‹. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚Π΅ сСанс ΠΈ Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ снова с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записью. На этот Ρ€Π°Π· страница Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ пустой.

Π—Π°Ρ‰ΠΈΡ‚Π° Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

Никаких Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΈΜ† Π½Π° доступ ΠΊ страницам Π΅Ρ‰Π΅ Π½Π΅ сущСствуСт, поэтому Π»ΡŽΠ±ΠΎΠΈΜ† зарСгистрированный ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ URL (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, http://localhost:8000/topics/1/arrow-up-right) ΠΈ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ страницы Ρ‚Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΠΌΡƒ удастся ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ.

triangle-exclamation

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдставлСния topic():

Код 404 β€” стандартноС сообщСниС ΠΎΠ± ошибкС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ возвращаСтся Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΉ рСсурс Π½Π΅ сущСствуСт Π½Π° сСрвСрС.

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Http404 (строка 3), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΏΡ€ΠΈ запросС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‚Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΅ΠΌΡƒ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ Π½Π΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² запрос Ρ‚Π΅ΠΌΡ‹, ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ страницы ΠΌΡ‹ убСТдаСмся Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ этой Ρ‚Π΅ΠΌΡ‹ являСтся Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ прилоТСния.

Если Ρ‚Π΅ΠΌΠ° Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ, выдаСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Http404, Π° Django Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ страницу с ошибкой 404

Пока ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ записи Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡ‚ Django сообщСниС Β«Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°Β»

Page not found (404)

Π—Π°Ρ‰ΠΈΡ‚Π° страницы edit_entry

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ edit_entry ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ URL-адрСса Π² Ρ„ΠΎΡ€ΠΌΠ΅ http://localhost:8000/edit_entry/entry_id/arrow-up-right, Π³Π΄Π΅ entry_id β€” число.

Π—Π°Ρ‰ΠΈΡ‚ΠΈΠΌ эту страницу, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ URL для получСния доступа ΠΊ Ρ‡ΡƒΠΆΠΈΠΌ записям:

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ запись ΠΈ Ρ‚Π΅ΠΌΡƒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с этой записью. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ провСряСм, совпадаСт Π»ΠΈ Π²Π»Π°Π΄Π΅Π»Π΅Ρ† Ρ‚Π΅ΠΌΡ‹ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. ΠŸΡ€ΠΈ нСсовпадСнии выдаСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Http404

БвязываниС Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅ΠΌ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ

Π’ настоящСС врСмя страница добавлСния Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅ΠΌ Π½Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½Π°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ связываСт Π½ΠΎΠ²Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ выдаСтся сообщСниС ΠΎΠ± ошибкС IntegrityError с ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅ΠΌ NOT NULL constraint failed: learning_logs_topic.owner_id.

Django Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠΈΜ† Ρ‚Π΅ΠΌΡ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄Π°Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ поля owner.

IntegrityError at /new_topic/

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π»Π΅Π³ΠΊΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ request.

Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΈΜ† ΠΊΠΎΠ΄, ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΈΜ† Π½ΠΎΠ²ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ:

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ form.save() пСрСдаСтся Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ commit=False, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ новая Ρ‚Π΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° ΠΏΠ΅Ρ€Π΅Π΄ сохранСниСм Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (строка 13).

Атрибуту owner Π½ΠΎΠ²ΠΎΠΈΜ† Ρ‚Π΅ΠΌΡ‹ присваиваСтся Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΈΜ† ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ (строка 14).

НаконСц, ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ save() для Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ экзСмпляра Ρ‚Π΅ΠΌΡ‹ (строка 15).

circle-check

Π’Ρ‹ смоТСтС Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅ΠΌ для любого количСства Ρ€Π°Π·Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΈΜ†.

circle-check

Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹ для создания Π½ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅ΠΌ ΠΈ записСй, Π° Ρ‚Π°ΠΊΠΆΠ΅ рСдактирования ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°Π»Π΅Π΅ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΡˆΠ»ΠΈ ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ систСмы ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй. Π’Ρ‹ прСдоставили ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ сСанс Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс Django UserCreationForm для создания Π½ΠΎΠ²Ρ‹Ρ… ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Ρ… записСй.

ПослС создания простой систСмы Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ рСгистрации ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΈΜ† Π²Ρ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ»ΠΈ доступ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΈΜ† ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ страницам, для этого использовался Π΄Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ @login_required. Π—Π°Ρ‚Π΅ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ связаны с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ внСшнСго ΠΊΠ»ΡŽΡ‡Π°. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° миграция Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ввСсти Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π’ послСднСй части Π²Ρ‹ ΡƒΠ·Π½Π°Π»ΠΈ, ΠΊΠ°ΠΊ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚ΡŒ состав Π΄Π°Π½Π½Ρ‹Ρ…, просматриваСмых ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ, с использованиСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΜ† прСдставлСния.

Для чтСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… использовался ΠΌΠ΅Ρ‚ΠΎΠ΄ filter(), Π° Π²Π»Π°Π΄Π΅Π»Π΅Ρ† Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… сравнивался с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

ΠžΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ прилоТСния

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΌΡ‹ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π½ΠΎ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ прилоТСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ Π½Π° Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. И это Π²ΠΏΠΎΠ»Π½Π΅ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹ΠΈΜ† ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ приносит ΠΏΠΎΠ»ΡŒΠ·Ρƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΎΠΌ случаС, Ссли ΠΎΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ΠΈΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΈΜ† ΠΏΠ»Π°Π½, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π½ΠΈΠΌ.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ django-bootstrap4

Для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Bootstrap Π² наш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ django-bootstrap4 Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„Π°ΠΈΜ†Π»Ρ‹ Bootstrap, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ ΠΈΡ… Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ прСдоставляСт доступ ΠΊ стилСвым Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌ Π² ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ django-bootstrap4, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΈΜ† Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΈΜ† срСдС:

Π—Π°Ρ‚Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΈΜ† ΠΊΠΎΠ΄ для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ django-bootstrap4 Π² список INSTALLED_APPS Π² Ρ„Π°ΠΈΜ†Π»Π΅ settings.py:

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, созданных Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ Π² Π½Π΅Π΅ запись 'bootstrap4'. ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ сСкция Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Π»Π°ΡΡŒ послС сСкции # Мои прилоТСния, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ сСкциСй, содСрТащСй прилоТСния Django ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

ИспользованиС Bootstrap для оформлСния Learning Log

По сути, Bootstrap прСдставляСт собой большой Π½Π°Π±ΠΎΡ€ инструмСнтов стилСвого оформлСния. Π’Π°ΠΊΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° содСрТит ряд шаблонов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ для формирования ΠΎΠ±Ρ‰Π΅Π³ΠΎ стиля. ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ этими шаблонами Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ инструмСнтами оформлСния. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, прСдоставляСмыС Bootstrap, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ ссылкС http://getbootstrap.com/arrow-up-right, Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Π½Π° ссылкС Examples ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» Navbars. ΠœΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ шаблоном Navbar static, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ панСль Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для содСрТимого страницы.

ИзмСнСниС base.html

Π¨Π°Π±Π»ΠΎΠ½ base.html Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π½Π΅ΠΌ Π±Ρ‹Π» задСйствован шаблон Bootstrap.

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² HTML

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² base.html: Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ HTML ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π² Ρ„Π°ΠΉΠ»Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ страницы Learning Log Π² строкС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ имя сайта. Π’Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ трСбования для использования Bootstrap Π² ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ…. Π£Π΄Π°Π»ΠΈΡ‚Π΅ всС содСрТимоС base.html ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ:

Last updated