background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Полный курс по Python Django # Курс программирования Django # Django уроки # 2"

input logo icon
Обложка аудиозаписи
Подождите немного, мы готовим ссылки для удобного просмотра видео без рекламы и его скачивания.
console placeholder icon
Оглавление
|

Оглавление

0:43
Обзор файлов в корне проекта Django
12:47
Локальная разработка и разработка в продакшене
16:13
Модель базы данных
20:15
Приложения Django
27:42
Обзор файлов в приложении
33:44
Как работает Django
46:18
Создание контроллеров
1:02:19
HttpRequest Django
Теги видео
|

Теги видео

python
django
django уроки
курс программирования django
курс по django
django 3 курс
django фреймворк
engineerspock
инженер спок
курс python django
программирование
it
айти
ityoutubersru
программист
разработка
ityoutubers
питон
ооп
django_3_python_backend_web_development_for_beginner
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:00
бинарный Салют друзья на связи снова
00:00:03
инженерспок продолжается курс по Джанго
00:00:06
за авторством Валерия павликова в этом
00:00:10
выпуске обзор файлов корневой папке
00:00:12
проекта разница между локальной
00:00:15
разработкой и продакшеном модель базы
00:00:18
данных для курсового проекта приложение
00:00:20
в Джанго обзор файлов создаваемых при
00:00:24
создании приложения основной цикл
00:00:26
обработки сообщений джанга создание
00:00:29
контроллеров и http Quest поехали
00:00:43
откроем сейчас
00:00:44
самую важную файл в корневом каталоге
00:00:47
это settings.by и пойдем по каждому
00:00:51
переменным Я постараюсь комментировать и
00:00:53
как раз таки мы поговорим про дебаг
00:00:54
переменную Я постараюсь комментировать
00:00:57
каждую переменную но в рамках того то
00:01:00
что мы изучили Сейчас может быть немного
00:01:02
сложно Поэтому я буду говорить что мы к
00:01:04
этой переменной Вернемся позже когда
00:01:06
будем затрагивать определенную тему
00:01:08
связанную с этой переменной и тогда
00:01:10
будет более целесообразно вам объяснить
00:01:12
что значит данная переменная Потому что
00:01:15
сейчас абстрактно объяснять будет
00:01:17
достаточно сложно и вам тоже не понятно
00:01:20
поэтому когда мы дойдем до определенной
00:01:23
темы Да я затрону переменную Но сейчас
00:01:25
все равно таким вот более хайлевелом я
00:01:28
расскажу о том что значит каждая
00:01:30
переменная Окей давайте начнем по
00:01:33
порядку и в начале Да вообще чем классно
00:01:36
джанга то что он нам изначально
00:01:37
показывает вообще здесь в settings.by
00:01:41
все
00:01:42
ссылки на документацию То есть можно
00:01:45
перейти и почитать более подробно Ну 1
00:01:49
переменная это Base DIR данная
00:01:51
переменная содержит себе полный путь
00:01:53
ведущий до нашего проекта Store данная
00:01:57
переменной будет и в данном файле
00:01:58
используется и в дальнейшем Нам тоже
00:02:00
будет необходимо ее использовать Это
00:02:02
очень хорошо потому что нам всего лишь
00:02:04
нужно будет вызвать данную переменную и
00:02:07
к ней прибавить какой-то дополнительную
00:02:09
категорию каталог вернее как здесь вот
00:02:11
примеры показано да то есть идет склейка
00:02:13
путей если нам нужно будет добраться до
00:02:16
какой-то папки это очень удобно далее
00:02:19
этот ключ собственно является Понятно
00:02:22
секретным он обеспечивает целостность
00:02:24
передачи данных между серверами То есть
00:02:28
то что мы сейчас разрабатываем и в да
00:02:31
между клиентами о том что такое клиенты
00:02:34
Мы тоже с вами позже поговорим в
00:02:36
определенном модуле переменная дебаг
00:02:38
которые мы затронули с вами немного
00:02:40
ранее да она стоит У нас значение True и
00:02:43
в целом Понятно Мы локально
00:02:45
разрабатываем и это Окей то что она
00:02:47
стоит в значении True но у нас здесь
00:02:49
идет достаточно большой предупреждение
00:02:50
от Jungle то что мы должны выключить
00:02:53
данную переменную поставить ее значение
00:02:55
false Когда будем работать на продакшене
00:02:58
что же означает данная переменная Дело в
00:03:01
том что когда мы будем вести разработку
00:03:03
мы не раз с этим столкнемся Мы например
00:03:06
можем находиться на нашем сайте Но к
00:03:09
примеру произошла какая-то ошибка об
00:03:11
ошибках Мы тоже поговорим отдельно но
00:03:13
примеру да Мы перешли на несуществующую
00:03:16
страницу и у нас здесь ошибка 404 и
00:03:20
написано что страница не найдена в
00:03:22
данном случае здесь не так много
00:03:24
информации которая может использовать
00:03:26
злоумышленники или просто пользователь
00:03:28
которому в целом это не важно что здесь
00:03:30
вообще написано но тем не менее Да здесь
00:03:33
есть некая информация о том что у нас
00:03:35
есть он какие-то пути которые мы можем
00:03:37
на самом деле использовать
00:03:39
которые доступны Ну из более подробной
00:03:42
информации на этом все да но бывают
00:03:44
такие ошибки которые выводят очень много
00:03:46
подробной информации пользователя
00:03:48
запросе который произошел там каких-то
00:03:50
секретных ключах такого не должно быть и
00:03:53
для того чтобы это предотвратить на
00:03:56
продакшене мы ставим значение false и
00:03:58
тогда что это означает то есть данная
00:04:01
страница сейчас здесь сделаем таким вот образом
00:04:04
потом вернемся к этому переменной
00:04:06
сделали значение fals да И что это
00:04:08
значит Это значит что данная страница
00:04:10
просто будет выглядеть вот таким вот
00:04:12
образом что страница не найдена просто
00:04:14
пользователь если перешел да то ему
00:04:17
выводится сообщение данную страницу
00:04:19
можно переделать под более красивый
00:04:21
шаблон но по умолчанию выглядит это вот
00:04:24
такие вот образом
00:04:26
и понятно что там если будут какие-то
00:04:28
другие тоже ошибки более раскрывающие
00:04:31
детали нашего проекта здесь будет тоже
00:04:33
выводиться информация что там произошла
00:04:35
500 к примеру ошибка да типа ошибка
00:04:38
сервера и просто белый как бы лист и без
00:04:42
какой-либо подробной информации но нам
00:04:44
как разработчикам когда мы делаем Это
00:04:46
все локально и разрабатываем нам очень
00:04:48
важно чтобы мы видели вывод всей
00:04:51
информации это очень удобно Для
00:04:52
дальнейшего тестирования отладки
00:04:54
приложения и так далее поэтому мы к
00:04:58
этому еще раз Вернемся но опять же позже
00:05:01
доступные Хосты обычно здесь
00:05:05
вводит определенную какую-то информацию
00:05:07
могут вести Да здесь например мои сайт
00:05:10
как я писал ранее да то что если у нас
00:05:12
располагается наш проект по данному полю
00:05:16
но по данному доме номер не Но обычно
00:05:19
делают просто звездочкой обозначаю что
00:05:22
на любом доме Данный проект будет
00:05:25
доступен двигаемся дальше и переменная
00:05:28
instone UPS то есть при установленные
00:05:31
приложения и или просто до установлены
00:05:34
приложения по теме с приложениями мы
00:05:37
будем говорить в сегодняшнем модуле в
00:05:40
данном модуле Но немного позже и
00:05:42
поговорим вообще про сущность Что значит
00:05:44
приложение по сути да Если так кратко то
00:05:49
весь проект он будет делиться на
00:05:51
приложение которое будет сохранять в
00:05:52
себе какую-то вернее хранить в себе
00:05:54
какую-то
00:05:55
важную информацию Но об этом мы Позже
00:05:59
middleware это промежуточные слои
00:06:02
которые помогают нам вот когда мы
00:06:04
запускаем проект запускаются вот эти
00:06:06
промежуточные слои и в дальнейшем они
00:06:09
очень сильно нам помогают в том плане
00:06:11
что нам не нужно изобретать велосипед
00:06:14
очень много такой повторяющейся
00:06:16
информации которая шла раньше из
00:06:18
проектов проекта на занесена в данный
00:06:20
промежуточные слои которые отвечают
00:06:22
например за безопасность за проброску
00:06:25
сессии для пользователей защиту там от
00:06:28
Атак таких как сесть Софи токены
00:06:32
аутентификацию добавляют и так далее То
00:06:34
есть мы об этом тоже будем позже
00:06:36
говорить но вот таким вот кратким
00:06:39
ликбезом это вот таким вот образом
00:06:42
но по сути там где у нас располагается
00:06:44
наш
00:06:45
URL адреса Мы после файла settings.by
00:06:48
перейдем к данному файлу и посмотрим как
00:06:50
он выглядит переменная templates она
00:06:52
отвечает за отображение шаблонов и
00:06:55
работу с шаблонами Мы будем работать в
00:06:58
данном модуле с шаблонами перенесем и
00:07:01
посмотрим как это выглядит нам
00:07:02
недостаточно будет только перенести
00:07:04
шаблоны и все нам конечно же нужно будет
00:07:07
шаблоны передавать какую-то информацию и
00:07:09
для того чтобы шаблон у нас оживился и
00:07:12
выполнял какие-то там функции методы Нам
00:07:14
необходимо использовать определенный
00:07:16
бэкент то есть движок для шаблонов и для
00:07:20
вернее в Джанго используется именно
00:07:22
Джанго templace
00:07:24
движок можно поставить и джинджа если вы
00:07:28
работали в во фласке Но в данном случае
00:07:32
здесь мы будем работать
00:07:35
остальные переменные там контекст об
00:07:38
этом мы поговорим позже вот я имею ввиду
00:07:40
вот эти это когда мы будем говорить
00:07:43
больше про шаблона мы поговорим и про
00:07:45
данные опции
00:07:48
w и cg aplication это там где у нас
00:07:51
располагается файл wagi вот здесь он мы
00:07:55
его будем более подробно разбирать в
00:07:58
продвинутом уровне Когда будем говорить
00:08:00
о деплое нашего проекта на продакшн
00:08:05
база данных собственно здесь информация
00:08:07
о том какая база данных используется как
00:08:09
я говорил ранее у нас используется и
00:08:11
скиллайт 3 и как раз таки Вот видите
00:08:13
здесь используется та переменная BS Deer
00:08:16
которую мы рассматривали выше и идет
00:08:19
склейка вот таким вот образом то есть
00:08:21
путь до проекта плюс склейка к базе
00:08:24
данных То есть у нас здесь таким вот
00:08:26
образом выводится название нашей базы
00:08:28
данных
00:08:29
далее
00:08:31
пароли валидация для паролей то есть
00:08:34
здесь идет по умолчанию 4 валидатора
00:08:37
который можно отключить Но обычно лучше
00:08:40
лучше не надо валидация заключается в
00:08:43
том то что пароль должен заключается
00:08:45
минимум в 8 символах он не должен
00:08:48
повторяться Я имею ввиду вернее он
00:08:50
должен совпадать с введите ролик
00:08:52
Подтвердите пароль должна быть маленькая
00:08:56
заглавная буква В общем стандартная
00:08:58
валидаторы
00:09:00
далее секция с там где мы можем выбрать
00:09:04
какой у нас используется язык в нашем
00:09:07
проекте по умолчанию на данный момент
00:09:09
будет английский стоять тайм-зона в
00:09:12
которой у нас располагается проект это
00:09:14
по умолчанию тоже будет uts и далее
00:09:17
дополнительные поля для локализации то
00:09:19
есть для того чтобы в дальнейшем Когда
00:09:21
мы будем говорить про локализацию нашего
00:09:24
проекта в том плане что перевести там на
00:09:26
русский на английский на французский
00:09:28
пример языки используются данные
00:09:30
переменные пока мы использовать данный
00:09:33
переменные не будем данное поле статику
00:09:36
URL это поле которое хранит себе
00:09:40
информацию Где у нас хранится статика
00:09:43
Что такое вообще статика это все файлы
00:09:47
которые хранятся у нас в проекте там
00:09:50
стиле скрипты изображения То есть это
00:09:53
CSS файлы JavaScript файлы images и так
00:09:57
далее То есть все все что у нас хранится
00:09:58
в проекте что не отображается как-то
00:10:01
Извне то что изначально вообще у нас
00:10:04
нужно для нашего проекта чтобы он
00:10:06
полноценно работал это все относится к
00:10:09
работе со статикой и мы более подробно
00:10:12
поговорим уже на сегодняшнем уроке Но
00:10:15
чуть позже и поле по умолчанию для Это
00:10:18
для работы с базами данных сейчас смысла
00:10:22
нет говорить про данное поле очень
00:10:23
абстрактно будет информация мы к нему
00:10:25
Вернемся Когда будем разговаривать про
00:10:28
работу с базами данных вот это то что
00:10:31
касалось файла settings.pi Надеюсь
00:10:34
более-менее стало понятно Давайте
00:10:37
посмотрим
00:10:38
файл.пай Да он здесь достаточно
00:10:40
маленький здесь больше информации о том
00:10:42
что Джанго говорит о том как это
00:10:44
использовать
00:10:45
но в целом сейчас у нас всего лишь
00:10:47
доступен Один путь это админ слэш Да мы
00:10:51
даже видели данный путь когда приходили
00:10:53
на несуществующую страницу То есть это
00:10:55
один из путей который нам доступен Мы в
00:10:59
целом можем на него перейти
00:11:01
да Но у нас пока нету естественно
00:11:03
суперпользователя мы не сможем сюда
00:11:06
войти просто видим то что есть такая
00:11:08
возможность перейти в админку и в
00:11:11
дальнейшем и также будем добавлять здесь
00:11:12
свои дополнительные
00:11:14
URL адреса данном Например нужно будет
00:11:16
сделать к примеру путь продукцию Да пока
00:11:19
его Конечно же нет но мы его будем сюда
00:11:22
добавлять Вот это два главных файла
00:11:25
который стоило поговорить остальные
00:11:27
файлы и нет точка пай обычно этот файл
00:11:31
будет расположен во всех каталогах
00:11:33
которые у нас располагаются в проекте он
00:11:35
всегда пустой и это просто файл говорит
00:11:39
о том то что он говорит данному каталогу
00:11:42
о том что считаю вот эти файлы как
00:11:45
группу файлов принадлежащий данному
00:11:47
каталогу мы к нему никогда не будем
00:11:49
больше возвращаться он просто должен по
00:11:51
умолчанию находиться в каталоге всегда
00:11:53
пустой и это просто идет из курса по
00:11:56
питону и cg
00:11:58
эти два файла они
00:12:01
для того чтобы мы могли задоплоить наш
00:12:04
проект на продакшн опять же мы будем они
00:12:06
говорить более подробно Когда будем
00:12:07
собственно заниматься деплоем сервера на
00:12:11
продакшн вот это все файлы которые я
00:12:16
хотел рассказать и дать какую-то
00:12:19
информацию
00:12:20
следующим нашим шагом будет уже создание
00:12:23
приложения и мы начнем Уже именно
00:12:26
работать то есть мы сначала создадим
00:12:28
приложение поговорим Что такое
00:12:30
приложение поговорим про файлы которые
00:12:32
находятся в каталоге приложения дальше
00:12:34
начнем уже ввести разработку и перенесем
00:12:37
наш наших непосредственно в проект
00:12:41
поэтому предлагаю этим сейчас и заняться
00:12:47
Давайте теперь поговорим о файлах
00:12:49
которые находятся в каталоге Store Но
00:12:52
прежде чем перейти мы вернемся к нашей
00:12:54
презентации и посмотрим на данный слайд
00:12:57
то есть здесь будет у нас сравнение
00:13:00
между локальной разработкой и
00:13:03
разработкой которая идет на продакшн Но
00:13:05
прежде чем мы вообще поговорим о
00:13:07
различиях нужно понимать что такое
00:13:09
локальная разработка Что такое
00:13:11
разработка на продакшн но в целом
00:13:14
Понятно локально это вот то что мы
00:13:16
сейчас с вами делаем Это только там на
00:13:18
нашем компьютере к примеру и возможно
00:13:20
там еще могут использовать разработку
00:13:23
другие программисты об этом мы чуть
00:13:25
позже поговорим то что касается именно
00:13:27
Продакшен это
00:13:30
значит то что всю нашу работу которую мы
00:13:33
сделали Мы хотим как бы опубликовать на
00:13:36
всеобщее обозрение грубо говоря то есть
00:13:39
опубликовать в интернете чтобы это стало
00:13:41
доступно всем то есть обычным
00:13:43
пользователям да и все могли
00:13:45
пользоваться потому что то что у нас
00:13:46
находится сейчас это что мы делаем
00:13:48
локально это доступно только на нашем
00:13:51
локальном компьютере и никто другой не
00:13:53
может перейти на адрес
00:13:56
127.0.0.18 тысяч до это доступно только
00:14:00
для нас Поэтому в дальнейшем Когда я
00:14:02
буду говорить Production имейте ввиду
00:14:03
что это значит наш проект будет
00:14:06
публикован в Интернете Но обычно не
00:14:09
говорят что проект будет опубликован
00:14:11
Обычно говорят проект будет задеплоин от
00:14:15
слова deploy
00:14:17
обозначает что мы развернем поднимем
00:14:21
разные можно синонимы предлагать к слову
00:14:24
до плой но в общем это означает то что
00:14:26
мы опубликуем наш проект в интернете
00:14:29
опубликуем не говорим говорим deploy вот
00:14:33
это небольшой вес между локальной
00:14:36
разработкой и продакшн Но более детально
00:14:39
да чем это отличается понятно что это
00:14:41
такие более такие основные моменты То
00:14:44
есть их на самом деле намного больше но
00:14:46
мы затронем сейчас основные которые нам
00:14:48
будут необходимы то есть локальная
00:14:51
Разработка доведется и разработка
00:14:53
который идет на продакшн то есть
00:14:55
локальные разработки мы будем
00:14:56
использовать как и сказал ранее базу
00:14:58
данных dbsqlite 3 потому что она отлично
00:15:01
подходит для локальной разработки для
00:15:04
обучения на продакшене же мы будем
00:15:06
использовать другую базу данных а
00:15:08
Конкретно по воскрес далее когда мы наш
00:15:12
проект интернет Да у нас получается
00:15:14
обычно это находится на каком там мой
00:15:18
сайт.com или какой-то другой который вы
00:15:21
выберете название вашего домена локально
00:15:25
ожидает происходит именно вот на этом
00:15:26
адресе Ну порт Вы только можете менять в
00:15:29
локальной разработке проект обычно
00:15:31
доступен разработчикам которые работают
00:15:33
на данном проектом Если же мы говорим
00:15:36
про Production то это доступно всем
00:15:38
пользователям и вот это Последний пункт
00:15:42
который у нас возможно может сейчас
00:15:43
заинтересовать это то что в локальной
00:15:46
разработки у нас значение дебаг
00:15:48
переменной о котором мы поговорим
00:15:50
буквально через несколько минут оно
00:15:52
стоит в значении True А в на продакшене
00:15:55
оно Обязательно должно стоять на
00:15:57
значении false Что же это за переменная
00:16:00
как она выглядит мы сейчас поговорим и
00:16:03
посмотрим
00:16:04
а самое главное чтобы Да вы запомнили
00:16:06
что в локальной разработке именно дебаг
00:16:09
True в продакшене Да бак Falls давайте
00:16:12
мы сейчас с вами поговорим про данный
00:16:15
пункт это архитектура базы данных
00:16:17
будущего проекта и почему это важно в
00:16:19
самом начале Но прежде чем приступить к
00:16:22
этому пункту мы еще раз откроем нашу
00:16:25
верстку посмотрим как она выглядит и нам
00:16:28
здесь нужно
00:16:30
поговорить и посмотреть на нее еще раз
00:16:32
для того чтобы мы могли с вами
00:16:34
представить Какие таблицы для базы
00:16:37
данных в целом нам понадобится почему
00:16:39
это важно продумать самом начале потому
00:16:42
что весь проект будет в общем-то
00:16:45
строится на основе той архитектуры баз
00:16:47
данных которую мы выберем который
00:16:49
построим и поверх уже таблиц который
00:16:53
будет у нас находится в базе данных
00:16:55
которые данный у нас будут храниться мы
00:16:57
будем уже составлять определенные
00:16:58
контроллеры какие-то определенные
00:17:00
шаблоны и так далее поэтому Давайте
00:17:04
посмотрим какие сущности у нас в на
00:17:07
нашем сайте хранятся которые мы могли бы
00:17:09
перенести и обрабатывать непосредственно
00:17:11
уже на Back and части на Джанго Это
00:17:16
следующее То есть у нас получается
00:17:18
конечно же работа с пользователем то
00:17:21
есть
00:17:22
пользователь в целом есть всегда здесь
00:17:25
очевидная работа с пользователем это
00:17:27
будет
00:17:29
авторизация регистрация личный кабинет и
00:17:33
все что связано вообще с пользователем
00:17:34
Но самое главное что нам нужно где-то
00:17:37
хранить информацию пользователя поэтому
00:17:39
у нас точно должна быть таблица которая
00:17:42
сохраняет данную информацию то есть
00:17:44
информацию о пользователе
00:17:46
то есть мы как бы с одной таблице
00:17:48
разобрались так Прошу прощения Давайте
00:17:52
перейдем еще раз вот сюда и откроем
00:17:55
каталог
00:17:57
почему-то стоит страница не срабатывает
00:17:58
Но неважно важно то что мы сейчас
00:18:01
находимся здесь и такие сущности мы
00:18:05
будем хранить еще в базе данных понятно
00:18:07
что нам нужно хранить где-то список
00:18:10
товаров чтобы потом его выводить то есть
00:18:12
таким образом напрашивается новая
00:18:14
таблица которая будет отвечать за
00:18:16
информацию о товаров о продуктах которые
00:18:19
у нас отображаются в каталоге Да у нас
00:18:22
будет хранится название цена описание и
00:18:24
так далее Что еще у нас товары они
00:18:27
относятся к определенным категориям мы
00:18:29
потом добавим здесь фильтрацию по
00:18:31
категориям и естественно нам нужно тоже
00:18:34
значит где-то хранить категории поэтому
00:18:36
таблица для категории она тоже будет нам
00:18:40
необходим поэтому мы тоже создадим И
00:18:43
последнее то что нам понадобится в нашем
00:18:46
проекте на базовом уровне то есть на
00:18:49
базовом курсе
00:18:50
Это работа с корзиной товаров да то есть
00:18:54
у нас здесь будет отображаться Какие
00:18:57
товары мы добавили в корзину и
00:18:59
высчитывается общая стоимость этих
00:19:01
товаров в этом моменте
00:19:04
таблицу для баз данных это пожалуй все
00:19:08
у нас потом на продвинутом курсе будут
00:19:11
уже и оформление заказов это тоже мы все
00:19:13
это будем хранить и
00:19:15
таблицы будут расширяться но пока что
00:19:17
вот эти вот 4 основные таблицы
00:19:20
подрезюмируем и перейдем в нашу
00:19:23
презентацию откроем данный слайд и
00:19:25
посмотрим на архитектуру баз данных
00:19:28
которую будет в нашем проекте как я
00:19:31
сказал ранее да у нас 4 таблицы как раз
00:19:34
таки таблица продуктов категории таблица
00:19:38
корзины товаров и таблица пользователей
00:19:40
по сути вот таким вот образом будет
00:19:43
выглядеть архитектура баз данных и ее
00:19:47
важно создать в самом начале опять же
00:19:49
почему потому что на основе этой
00:19:52
архитектуры мы будем строить наш проект
00:19:56
и также архитектура баз данных она очень
00:19:59
сильно нам поможет разобраться с тем
00:20:02
Какие приложения для джанга нам
00:20:04
необходимы что же такое приложение а мы
00:20:07
поговорим с вами сейчас и посмотрим как
00:20:10
раз таки на тот момент как данная
00:20:13
архитектура нам поможет
00:20:15
что же такое приложение в Джанго давайте
00:20:19
мы откроем с вами проект и в целом
00:20:22
помните когда мы разбирали с вами файл
00:20:25
settings.pi мы видели что здесь есть
00:20:27
переменная Install tabs то есть
00:20:29
установленное приложение
00:20:31
что вообще как бы значит эти приложения
00:20:35
в Джанго
00:20:37
по сути если провести аналогию с книжным
00:20:41
шкафом Да на котором
00:20:43
есть полочки в котором есть полочки и на
00:20:47
котором стоят книги
00:20:48
так вот каждая из палочек отвечает за
00:20:52
определенный жанр книги
00:20:54
и на одной полочке Там стоят например
00:20:57
детективы на другое публицистика и так
00:21:00
далее и по сути сам проект Джанго очень
00:21:04
похож на вот этот весь книжный шкаф в
00:21:06
нем есть различные полочки то есть
00:21:08
приложение которое отвечает за
00:21:11
различные так сказать жанры за различную
00:21:15
логику и Джанго по умолчанию уже
00:21:18
встроены несколько приложений которые
00:21:20
помогают нам в дальнейшем при разработке
00:21:24
и помогает избежать изобретения
00:21:26
велосипеда к примеру есть приложение
00:21:29
которое отвечает за админку Возможно вы
00:21:32
слышали возможно нет но в Джанго очень
00:21:35
мощная админ панель который идет из под
00:21:38
коробки нужно создать только
00:21:40
суперпользователя и начать пользоваться
00:21:41
этой админкой
00:21:44
как раз таки вот это приложение оно
00:21:46
отвечает за
00:21:48
админ часть также есть встроенная работа
00:21:51
с пользователями Несмотря на то что мы
00:21:53
будем добавлять свою таблицу
00:21:55
пользователей расширять ее и добавлять
00:21:57
свой функционал изначально в Джанго по
00:22:00
умолчанию идет уже встроенная работа с
00:22:03
пользователями даже есть Таблицы с
00:22:05
пользователями и как раз таки приложение
00:22:07
аласа отвечает за работу с пользователем
00:22:09
и так далее То есть есть несколько
00:22:12
приложений которые как раз таки
00:22:14
используются так вот если мы хотим
00:22:18
уже добавить что-то свое то есть начать
00:22:21
делать свой проект всегда нужно
00:22:23
приложение в котором будет храниться
00:22:24
определенная логика и опять же если
00:22:27
вернуться на сайт и посмотреть
00:22:29
но в целом можно как-то разграничить
00:22:32
какие приложения нам необходимы для
00:22:34
нашего проекта понятно что нам точно
00:22:37
необходимо
00:22:39
приложение которое отвечает за работу с
00:22:41
пользователями то есть там будет
00:22:42
храниться вся информация пользователях
00:22:44
там будет таблица создаваться для
00:22:46
пользователей там будет храниться
00:22:48
шаблоны для авторизации регистрации и
00:22:51
так далее То есть весь функционал точно
00:22:55
так же нам нужно будет им
00:22:57
где-то хранить информацию о каталоге с
00:23:02
товарами да то есть
00:23:05
страницы продуктов каталогов а главная
00:23:09
страница и так далее тоже это должно
00:23:10
где-то обрабатывать сохранить таблица о
00:23:14
продуктах о категориях и так далее И для
00:23:17
этого тоже нужно приложение то есть
00:23:19
таким вот образом
00:23:21
Почему я еще ранее сказал что
00:23:24
архитектура базы данных она очень важна
00:23:26
потому что нет единого правила по
00:23:28
созданию приложений Какие приложения
00:23:31
нужны особенно в самом начале достаточно
00:23:32
сложно понять Какие приложения
00:23:34
действительно нужны и вот если вы
00:23:37
создадите архитектуру BD в самом начале
00:23:39
то потом видео вот эти таблицы которые
00:23:44
вам нужны Вы можете их загруппировать по
00:23:46
какому-то определенному смыслу и уже на
00:23:50
основе этих смыслов создавать приложения
00:23:52
то есть до распределить книжки по жанрам
00:23:55
и понятие На какие полочки их нужно
00:23:58
сложить и как раз таки Здесь вы могли
00:24:00
уже заметить что есть
00:24:02
разграничение во-первых по цвету во
00:24:04
вторых подпись То есть у нас будет всего
00:24:07
два приложения на самом деле это users
00:24:09
Up и products Up в целом корзину таблицу
00:24:13
с корзиной можно было тоже разделить и
00:24:17
отнести в другое приложение Но на самом
00:24:19
деле там не так много будет функционала
00:24:21
Поэтому я подумал о том что было бы
00:24:23
неплохо Как раз таки сгруппировать все
00:24:25
эти таблицы в одно приложение вот
00:24:28
поэтому опять же нет единого правила по
00:24:30
созданию приложения но архитектура вам
00:24:33
это будет такой некий навигатор которым
00:24:36
поможет вам правильно создать
00:24:40
Давайте собственно создадим первое
00:24:42
приложение мы назовем будем работать
00:24:44
сейчас приложением продукции и вообще
00:24:47
какая у нас цель стоит перед нами на
00:24:50
данный момент мы перенесем
00:24:52
страницу с каталогом вот эту в наш
00:24:55
проект и страницу с главным страницы то
00:24:58
есть пока Всего лишь две страницы
00:25:00
перенесем просто посмотрим что они у нас
00:25:02
отображаются
00:25:03
именно в Джанго проекте Да Напоминаю что
00:25:07
это не джарный проект у нас это просто
00:25:08
верстка открыта просто HTML
00:25:13
но у нас как бы нужно нам сделать так
00:25:15
что если мы запускаем наш сайт да то на
00:25:18
главной странице у нас вот здесь вместо
00:25:19
вот данной странице будет отображаться
00:25:21
страница с
00:25:23
вот этой вот информацией главная
00:25:26
страница
00:25:27
ну для начала нам нужно создать
00:25:29
приложение
00:25:31
как мы его будем создавать Заходим в
00:25:34
терминал мы уже знаем и помните да то
00:25:36
что нас команда менедж.пай она дает нам
00:25:39
возможность К любым командам и как раз
00:25:42
таки в данном случае Нам нужно будет
00:25:44
вести опять Копаем и далее написать
00:25:47
новую команду Это Старт
00:25:50
Up Помните у нас до этого был Старт
00:25:52
Project Команда А здесь у нас уже будет
00:25:54
старт и называем приложение называем
00:25:57
приложение produx смотрим Что написано
00:26:00
Все верно без ошибок потому что в
00:26:02
дальнейшем
00:26:03
достаточно сложно Изменить название
00:26:06
лучше сразу писать верно и нажимаем
00:26:10
Enter
00:26:11
опять же Да Если вы делаете какие-то
00:26:14
ошибки Вы ошиблись там написание или еще
00:26:16
что-то не бойтесь удалили сделали нового
00:26:18
то есть ничего страшного в этом нет
00:26:21
все как вы видите появилась появился
00:26:25
новый каталог и это уже не просто до
00:26:28
каталог а именно является приложением То
00:26:32
есть если мы его откроем мы увидим с
00:26:34
вами здесь вот такую вот структуру В
00:26:36
целом все весь джанка проект построен На
00:26:40
таких вот приложениях у них у всех будет
00:26:42
в целом очень схожая структура то есть
00:26:44
выглядит вот таким вот образом
00:26:47
кроме конечно же каталога 100 главного
00:26:51
каталога в котором хранится немножко
00:26:53
другая информация Вот то есть таким вот
00:26:56
образом Мы создали с вами приложение
00:26:58
products после того как мы его создали
00:27:00
первым шагом И самое главное что
00:27:03
необходимо сделать это зарегистрировать
00:27:05
данное приложение
00:27:06
иначе в дальнейшем функционал просто не
00:27:09
будет работать мы переходим
00:27:11
settings.pi и здесь вводим название
00:27:15
нашего приложения приложение Pro все вот
00:27:19
таким вот образом то есть у нас все
00:27:21
подготовлено все сделано и по сути можно
00:27:26
начинать работу но прежде чем мы
00:27:28
приступим к работе нам нужно понять что
00:27:30
За что отвечает каждый из файлов поэтому
00:27:33
давайте мы быстренько пройдемся и
00:27:35
посмотрим что вообще в себе содержит
00:27:38
каждый файл и перейдем уже к практике
00:27:41
что же Давайте приступим и посмотрим что
00:27:44
значит каждый из файлов начнем самого
00:27:46
начала вернее из файлов Дак micrations
00:27:49
Вернемся чуть позже файл init.by как и в
00:27:53
каталоге Store Он пустой и мы уже
00:27:55
проходили до что он значит мы не будем
00:27:57
больше к нему возвращаться файл admin.pi
00:28:01
этот файл отвечает за регистрацию таблиц
00:28:04
которую мы будем создавать для вас
00:28:06
данный в регистрацию в админке Ну то
00:28:09
есть Мы создали с вами таблицу
00:28:11
если мы хотим чтобы эта таблица у нас
00:28:13
отображалась в админке чтобы мы могли
00:28:15
делать какие-то манипуляции Да Нам нужно
00:28:17
зарегистрировать таблицу здесь вот мы
00:28:21
вернемся к этому файлу В конце нашего
00:28:24
курса в конце базового уровня файл
00:28:28
ups.pi по сути хранить в себе информацию
00:28:30
просто о конфигурации здесь говорится о
00:28:33
том что за приложение и
00:28:36
какое по умолчанию используется в данном
00:28:39
приложении поля для тип данных для
00:28:42
создания таблицы опять же мы
00:28:44
этому моменту Вернемся Когда будем более
00:28:47
подробно говорить о создании таблиц в
00:28:50
базе данных
00:28:51
models.pi собственно здесь как раз таки
00:28:54
будут у нас создаваться таблицы для базы
00:28:57
данных
00:28:58
Далее идет файл тест точка пай здесь
00:29:02
создаются тесты для нашего проекта
00:29:05
вообще на самом деле это очень важная
00:29:06
Тема и желательно создавать тесты в
00:29:08
самом начале но понятно что когда мы еще
00:29:13
особо ничего не знаем как делать Джанго
00:29:15
создание тестов Может в начале немного
00:29:18
сбить на стол поэтому мы к этому
00:29:20
Вернемся позже но сейчас да информация
00:29:25
которая сейчас это этот файл для того
00:29:28
чтобы создавать здесь тесты и файл News
00:29:32
здесь у нас будут создаваться функции
00:29:34
для отображения шаблонов на нашем сайте
00:29:37
и мы как раз таки с этим файлом будем
00:29:39
работать сегодня уже в данном модуле
00:29:42
поэтому буквально через несколько минут
00:29:44
будем создавать здесь функции
00:29:48
и последний Да каталог мигрейшнс Здесь
00:29:51
тоже есть файл и не точка пай здесь
00:29:53
будут создаваться файлы миграции о
00:29:55
которых мы поговорим тоже позже когда
00:29:58
будем говорить о работе с базами данных
00:30:00
то есть вернемся к этому каталогу тоже
00:30:02
позже вот в целом таким вот образом
00:30:06
выглядит структура Никто не запрещает
00:30:08
добавлять какие-то дополнительные здесь
00:30:10
файлы каталоги и так далее но базовая
00:30:12
структура выглядит вот таким вот образом
00:30:14
и в дальнейшем Да все приложения с
00:30:16
которыми мы будем с вами работать они
00:30:18
будут выглядеть вот очень похожим
00:30:20
образом на самом деле еще один такой
00:30:23
момент что про приложение
00:30:27
мы если перейдем сейчас с этим с точкой
00:30:30
это такая более дополнительная
00:30:32
информация которая в дальнейшем вам
00:30:35
будет достаточно полезно сейчас можно ее
00:30:37
пропустить но тем не менее можно в
00:30:40
дальнейшем будет какая-то информация
00:30:42
вернуться помните Да я говорил про
00:30:44
приложение которое уже установлены в
00:30:47
Джанго на самом деле Да это все обычные
00:30:50
пакеты которые находятся
00:30:52
в
00:30:54
библиотеке Junk который мы установили
00:30:56
Как вы можете вспомнить Да если мы
00:30:59
сейчас перейдем в наши курсы
00:31:05
включение библиотеку здесь у нас есть
00:31:09
Джанго и здесь как раз таки хранятся
00:31:11
различные файлы в том числе Если мы с
00:31:14
вами внимательно посмотрим и перейдем в
00:31:17
countrype вот сюда то увидим Да что
00:31:20
здесь есть каталоги которые выглядят
00:31:23
точно так же как мы и наблюдаем их вот
00:31:26
здесь я это показываю к тому То что это
00:31:29
из ниоткуда не берется то есть Понятно
00:31:31
где-то установлен и где-то хранятся вот
00:31:35
эти каталоги просто чтобы вы видели что
00:31:37
это реально где-то хранится Ну что
00:31:40
больше хотел показать это через Вы
00:31:43
можете переходить во все эти каталоги
00:31:45
смотреть что они всегда включают
00:31:47
достаточно будет полезно в будущем при
00:31:49
уже более серьезной разработки смотрите
00:31:52
на macoste зажимаете клавишу Comment А
00:31:56
на Windows Это скорее всего будет
00:31:58
Контрол Главное чтобы она вот так
00:32:00
подсветилась нажимаете и как бы вас
00:32:03
перекидывает в данный каталог Да если вы
00:32:07
можете заметить мы как раз таки попали
00:32:08
виртуальное окружение которое вот у нас
00:32:10
как раз таки здесь находится и нас
00:32:13
принесло в контрит и конкретно в каталог
00:32:16
админ для чего я сюда перешел для того
00:32:19
чтобы показать вам что это приложение и
00:32:22
по сути как я сказал ранее все
00:32:24
приложения они выглядят очень похожим
00:32:26
образом то есть у них структура всегда
00:32:28
остается одна и та же если Вы
00:32:31
внимательно Посмотрите Да Несмотря на то
00:32:33
что здесь намного больше файлов
00:32:35
каталогов чем в нашем приложении
00:32:37
продукции но тем не менее Здесь точно
00:32:39
также есть каталог migrations Здесь
00:32:42
точно также есть файл ups.pi то есть
00:32:45
изначально это было обычное приложение
00:32:47
далее Модус точка пай тест точка Пай и
00:32:51
views но здесь в отдельных каталогах
00:32:54
можно и так тоже использовать если
00:32:56
перейдем баланс да то же самое Mi
00:32:58
greations admin.pi apps.pi
00:33:01
models.py и views.pi вот то есть по сути
00:33:06
все те же самые файлы каких-то файлов
00:33:08
может не быть да как например Здесь нет
00:33:10
файла admin.pi Ну само по себе это тоже
00:33:13
самое приложение вот этот момент я хотел
00:33:17
просто показать и в дальнейшем Мы будем
00:33:19
вот этим способом пользоваться переходя
00:33:21
в какие-то подкапотные моменты чтобы
00:33:23
посмотреть как это выглядит там
00:33:27
вот а сейчас мы уже с вами перейдем к
00:33:29
практике и более подробно посмотрим как
00:33:33
раз таки на тот момент как переносить
00:33:35
шаблон который мы с вами имеем вот здесь
00:33:37
Непосредственно в наш проект Ну в общем
00:33:40
займемся уже практикой давайте к этому и
00:33:43
приступим
00:33:45
еще один важный момент который нам стоит
00:33:47
обсудить прежде чем приступать к
00:33:50
практике это разобраться в том как
00:33:52
работает Джанго на таком
00:33:54
хайлевали то есть абстрактном уровне мы
00:33:58
посмотрим сейчас на моменты как В целом
00:34:01
вообще выглядит картина в Джанго
00:34:05
в каких-то
00:34:08
но в дальнейшем На уроках мы будем
00:34:11
погружаться в эти моменты которые
00:34:12
затронем сейчас более глубоко Сейчас
00:34:14
посмотрим Просто как Джанго работает
00:34:19
Посмотрим это с примерами и посмотрим
00:34:21
это на схеме на абстрактном уровне у нас
00:34:25
с вами сейчас открыто презентация слайд
00:34:28
и в целом вот таким вот образом выглядит
00:34:32
все взаимодействие работы с Джанго мы
00:34:36
говорим с Вами про веб-приложение про
00:34:39
web страницы и то как с ними
00:34:43
взаимодействует пользователя То есть
00:34:45
когда пользователь заходит у нас на
00:34:47
определенную страницу
00:34:49
выполняется всегда какой-то запрос
00:34:52
Происходит что теперь квест с
00:34:55
английского переводится как запрос
00:34:56
поэтому выполняется собственно он
00:34:59
request запрос когда выполняется запрос
00:35:03
этот запрос
00:35:05
неким образом отправляются в наше Джанго
00:35:08
наш Джанго проект и приходит сначала в
00:35:13
файл urls.pi то есть
00:35:16
когда мы с вами приходим уже на страницу
00:35:18
на определенную до страницу которую мы
00:35:21
указали в url.by срабатывает запрос как
00:35:24
я сказала ранее этот запрос приходит в
00:35:27
urls.pi этот запрос сравнивается с
00:35:31
определенным адресом то есть проверяется
00:35:34
Да там выполнился на этот запрос на
00:35:37
определенном адресе и
00:35:39
По какому адресу у нас располагается то
00:35:42
или иное представление то есть тот или
00:35:44
иной контроллер который выполняет за
00:35:48
обработку определенных вещей запросов о
00:35:51
которых мы с вами сейчас поговорим когда
00:35:53
запрос пришел он перенаправляется на
00:35:57
соответствующее представление то есть
00:35:59
соответствующий контроллер в файл
00:36:01
views.pi
00:36:03
этот файл содержит себе
00:36:07
некую функцию которая функцию обработчик
00:36:10
которая будет выполнять определенные
00:36:13
действия и в дальнейшем выдавать на
00:36:17
выходе
00:36:19
то есть определенный ответ для того
00:36:22
чтобы этот ответ сформировался
00:36:23
срабатывает так называемая система
00:36:25
шаблонов формируется
00:36:28
определенный шаблон по определенным по
00:36:31
определенной схеме и этот шаблон уже
00:36:34
выводится как виде ответа для
00:36:37
пользователя также может происходить
00:36:40
определенные обработка с работой моделью
00:36:44
то есть работа с базами данных чтение
00:36:48
или запись данных мы с моделями сейчас
00:36:50
не будем рассматривать пример это будет
00:36:52
более подробно рассмотрено на третьем
00:36:54
модуле сейчас просто посмотрим на вот
00:36:57
эту составляющую трех схем то есть
00:37:00
проходит запрос как он улетает в
00:37:03
потом этот запрос перенаправляется в
00:37:06
файл view.pf какой-то определенное
00:37:08
представление формируется ответ в виде
00:37:11
шаблона и как вообще этот шаблон
00:37:14
отрабатывает и как вообще можно с ним
00:37:17
работать давайте мы посмотрим это на
00:37:19
небольшом примере
00:37:22
этот пример такой у нас будет абстрактно
00:37:24
то есть Я подготовил проект отдельно от
00:37:27
нашего У нас
00:37:29
у нас
00:37:32
главный каталог это Example и
00:37:35
приложение которое называется Туториал
00:37:39
мы уже с вами поговорили о том какие
00:37:43
файлы содержатся в тех или иных
00:37:45
каталогах
00:37:46
сейчас мы с вами посмотрим пример как
00:37:49
раз таки тот который
00:37:51
мы рассмотрели
00:37:54
презентацию
00:37:57
Давайте перейдем в avias.pf файл и мы с
00:38:00
вами здесь просто сформулируем
00:38:02
любое совершенно любое представление у
00:38:06
нас здесь Джанго пишет О том что создать
00:38:08
представление здесь мы об этом тоже
00:38:10
поговорим более подробно сейчас смотрим
00:38:13
на абстрактном уровне и создадим примеру
00:38:18
функцию которую назовем видео
00:38:23
индекс и передадим сюда параметр request
00:38:26
и в этой функции мы сделаем возврат
00:38:28
определенного значения Давайте
00:38:31
импортируемости теперь спонсо да Как раз
00:38:33
таки тот response который нам и
00:38:35
необходим то есть да у нас контроллеров
00:38:38
формирует определенный ответ и
00:38:40
возвращает его возвращает определенную
00:38:44
файл
00:38:45
response и мы здесь пишем пример
00:38:50
вот таким вот образом и наш контроллер
00:38:52
нашу функцию нужно подключить на
00:38:54
определенный адрес для этого мы
00:38:56
переходим в росточка Пай и здесь
00:38:58
импортируем из нашего приложения
00:39:01
tutodoreal use импортируем функцию Index
00:39:04
далее точно так же как у нас это было
00:39:07
сделано из строчка выше мы здесь создаем
00:39:10
Давайте рандомно придумаем просто адрес
00:39:12
тоже назовем Туториал
00:39:16
закрывающийся слэш и далее мы Передаем
00:39:19
ссылку на функцию то есть мы не вызываем
00:39:21
функцию индекса Передаем на нее ссылку
00:39:24
об этом поговорим чуть позже
00:39:26
Давайте запустим и посмотрим как это
00:39:29
будет выглядеть перейдем сюда
00:39:31
здесь у нас главная страница на пусто
00:39:33
ничего нет перейдем на туториал Да и как
00:39:37
вы видите у нас здесь сформировалась у
00:39:39
нас выводится какой-то определенный
00:39:40
какой-то определенное сообщение которое
00:39:43
мы с вами передали в наши функции индекс
00:39:46
таким вот образом сформировалась то есть
00:39:50
теперь на данном примере когда мы с вами
00:39:52
создали Да вот небольшой пример как он
00:39:54
выглядит мы можем еще раз перейти к
00:39:56
данной схеме да то есть Каким образом
00:39:59
все выполняется когда мы переходим на
00:40:01
определенный адрес то есть на адрес
00:40:04
[музыка]
00:40:06
localhost двоеточие 8000 слэш туториал
00:40:10
слэш да то есть Мы перешли на
00:40:12
определенную на определенную страницу
00:40:15
сам пользователь перешел то есть таким
00:40:18
образом выполняется какой-то запрос этот
00:40:20
запрос когда он выполняется он
00:40:22
отправляется в файл.пай далее
00:40:27
этот запрос сравнивается То есть если у
00:40:30
нас вообще это страничка Да если она
00:40:32
есть то
00:40:34
этот запрос он перенаправляется на
00:40:37
соответствующие на соответствующее
00:40:39
представление в этом представлении
00:40:41
происходит определенная логика и
00:40:43
возвращается ответ в виде что теперь и
00:40:45
спонсор да то есть то что мы с вами
00:40:47
сделали
00:40:48
то есть еще раз да и уже на самом
00:40:51
примере то есть мы когда переходим вот
00:40:53
сюда на данную страничку
00:40:56
когда я сказал localhost То есть может
00:40:59
быть еще
00:41:01
127.0.0.1 далее порт 8000 туториал то
00:41:05
есть пользователь переходит сюда
00:41:06
срабатывает момент когда он переходит
00:41:10
запрос и он отправляется непосредственно
00:41:13
файл.пай далее мы проверяем Ага У нас
00:41:16
есть вот такой вот адрес туториал у нас
00:41:19
в нем есть функция индекс и нам нужно
00:41:23
вызвать эту функцию она собственно
00:41:25
вызывается и возвращается здесь уже
00:41:28
определенные значения вот таким вот
00:41:30
образом это отрабатывает но мы не
00:41:33
посмотрели на то как взаимодействие идет
00:41:36
вместе с шаблоном потому что у нас его
00:41:39
собственно здесь нет просто возвращается
00:41:40
определенный какой-то теперь спонсор
00:41:43
давайте мы в нашем приложении туториал
00:41:45
создадим новую папку которая назовем
00:41:47
templace она будет работать с шаблонами
00:41:51
здесь мы пометим как там plate Folder
00:41:54
Далее в этой же папки создадим еще одну
00:41:58
папку которую назовем туториал Как
00:42:00
название самого приложения
00:42:02
и в ней уже создадим
00:42:05
какой-то файл Давайте вопрос назовем
00:42:08
тест HTML
00:42:10
и собственно попробуем подключить его
00:42:13
непосредственно уже в наш контроллер
00:42:15
здесь для того чтобы убедиться что все
00:42:18
работает создадим какой-нибудь так
00:42:20
напишем здесь
00:42:21
[музыка]
00:42:25
и для того чтобы подключить данный
00:42:27
шаблон Теперь мы воспользуемся нашей
00:42:30
функцией рендера которая была изначально
00:42:31
предоставлена у нас здесь два
00:42:34
обязательных параметра это request и уже
00:42:37
название самого шаблона то есть мы идем
00:42:39
в туториал теста HTML И теперь мы можем
00:42:44
с вами обновить Да наш сервер перейти
00:42:47
непосредственно в
00:42:49
нашу страничку и обновить Да мы с вами
00:42:52
Увидим что у нас здесь изменилось у нас
00:42:55
подключился сам шаблон у нас здесь
00:42:57
изменился тайтл то есть таким вот
00:43:00
образом у нас подключился сам шаблон и
00:43:02
он сгенерировался и уже виде http вот
00:43:05
этого responso у нас является сам HTML
00:43:09
файл выдался для того чтобы вот так
00:43:12
сформировался шаблон и собственно он
00:43:16
вышел виде как
00:43:18
определенного ответа нам как раз таки
00:43:21
помогает система шаблонов которая уже
00:43:24
настроена в Джанго мы с вами немножко
00:43:26
затрагивали когда говорили в файле с
00:43:29
этим с точкой про переменную templates
00:43:31
Да здесь есть определенный Back and
00:43:33
которая позволяет работать с Джанго
00:43:36
тамплейцами есть еще дополнительную
00:43:39
бэкен то есть система шаблонов это
00:43:42
джинджа ей тоже можно воспользоваться Ну
00:43:46
лучше по умолчанию пользоваться то что
00:43:48
есть Джанго родной Джанго там творится
00:43:52
Вот как раз таки
00:43:55
Эта система шаблонов позволяет нам вот
00:43:57
сделать
00:44:00
определенный ответ в виде HTML файла и
00:44:04
также Эта система шаблонов нам позволяет
00:44:07
передать определенные данные которые мы
00:44:09
можем сформировать непосредственно в
00:44:11
нашем контроллере индекс в этой функции
00:44:15
примеры Давайте
00:44:16
[музыка]
00:44:18
Давайте мы его передадим вот здесь
00:44:20
определенный словарик и передадим тайтл
00:44:24
Да тест
00:44:33
таким образом да то есть мы можем
00:44:36
передать определенные словари
00:44:38
непосредственно в нашу функцию Рендеры и
00:44:40
уже к этому ключу обратиться в нашем
00:44:43
шаблоне вот здесь вот таким вот образом
00:44:46
и
00:44:49
у нас
00:44:51
сработает система шаблонов опять же вот
00:44:54
этот Jungle templace он обработает тот
00:44:57
ключ который мы передали непосредственно
00:44:59
в нашу функцию render и уже в самом
00:45:04
шаблоне теста htmls будет отображен тот
00:45:07
тайтл который мы передали Давайте
00:45:08
обновим здесь страничку да и увидим что
00:45:10
нас обновился title теперь здесь
00:45:13
написано тест template то есть вот этот
00:45:16
Джанго там plates система шаблонов
00:45:19
позволяет еще работать вот с динамикой
00:45:21
передачей данных обо всем об этом мы
00:45:24
более подробно будем говорить и на
00:45:26
следующем уроке уже когда будем
00:45:28
непосредственно работать с практикой
00:45:30
подключать шаблоны в наш проект и
00:45:33
поговорим более подробно о том как это
00:45:36
все работает вообще откуда берется вот
00:45:38
эта переменная request И как это все
00:45:41
взаимосвязано и
00:45:43
во втором модуле мы поговорим очень
00:45:46
подробно о том как формируются вот эти
00:45:48
вот контексты как с ними можно
00:45:50
взаимодействовать Какие вообще есть
00:45:52
конструкции в шаблонах и так далее
00:45:54
сейчас мы просто поговорили о том как
00:45:57
все работает непосредственно в Джанго
00:46:00
как вся эта система устроена На таком
00:46:02
абстрактном уровне
00:46:05
теперь можно двигаться дальше и уже
00:46:08
перейти непосредственно к нашему проекту
00:46:10
и начать подключать существующий шаблоны
00:46:13
и смотреть уже на реальном примере
00:46:16
Давайте этим и займемся Давайте перейдем
00:46:19
к практике И как я сказал ранее да мы
00:46:21
сейчас с вами перенесем два шаблона это
00:46:24
индекс HTML и продукты HTML
00:46:26
непосредственно в наш Jungle проект и
00:46:28
посмотрим что у нас все правильно
00:46:30
отображается и все работает так как нам
00:46:33
и необходимо для начала мы с вами
00:46:36
создадим в
00:46:38
приложении Pro новый каталог который
00:46:41
назовем templace
00:46:42
обращаю Ваше внимание что нужно написать
00:46:44
данный каталог без ошибок чтобы здесь
00:46:47
Было название templates шаблоны потому
00:46:50
что тоже могут быть некие проблемы если
00:46:53
будет какая-то опечатка и Если у вас
00:46:56
есть Pro версия Да вы можете пометить
00:46:58
данную директорию Как там plate Folder
00:47:00
далее опять же в данном каталоге
00:47:04
создаете новый каталог который называете
00:47:06
именем приложения то есть продукт это
00:47:10
нужно для того чтобы в дальнейшем Когда
00:47:12
у нас будет еще отдельное приложение и в
00:47:16
них тоже будет каталог templates в
00:47:19
разных может быть один и тот же HTML
00:47:23
файл я имею ввиду с одним и тем же
00:47:24
названием и чтобы не было никаких там
00:47:27
фьюзов в Джанго о том какой правильно
00:47:30
нужно использовать HTML файл для этого в
00:47:34
каждом templace каталоге создается еще
00:47:36
один каталог который называется Как
00:47:38
название самого приложения и здесь
00:47:41
собственно мы уже будем переносить все
00:47:43
необходимые для нас
00:47:45
HTML файлы и делать все остальную работу
00:47:49
Давайте создадим здесь файл Index HTML
00:47:52
здесь можно сразу все удалить И мы
00:47:55
переходим в наш нашу верстку просто
00:47:58
копируем и вставляем здесь все пока вот
00:48:01
таким вот образом не обращаем внимание
00:48:02
на то что здесь вот так все
00:48:04
подсвечивается Мы это с Вами через
00:48:07
какое-то время пофиксим и далее Также мы
00:48:11
создаем здесь следующий шаблон который
00:48:14
называем продукт
00:48:16
продукция HTML тоже удаляем
00:48:19
и копируем здесь все И переносим вот
00:48:24
таким вот образом вот сюда
00:48:26
OK
00:48:27
так когда мы с вами это все перенесли
00:48:31
нам нужно каким-то способом подключить
00:48:33
эти шаблоны к
00:48:36
функциям чтобы
00:48:38
данный шаблоны у нас стали видны давайте
00:48:41
мы этим и займемся
00:48:44
мы перенесли и Сейчас переходим в файл
00:48:48
views.pi И как я говорил вам ранее да
00:48:51
этот файл он отвечает за отображение
00:48:53
шаблонов в нашем проекте что же означает
00:48:56
вообще вот этот файл views.p здесь будут
00:48:59
создаваться на данном этапе функции в
00:49:03
дальнейшем здесь могут создаваться и
00:49:05
класса но мы об этом будем говорить
00:49:06
позже на данный момент что вам нужно
00:49:08
запомнить что здесь у нас
00:49:10
будут создаваться функции обычный
00:49:14
питоновские функции но также есть
00:49:17
синоним к вернее я буду использовать
00:49:20
синоним слова функции именно в рамках
00:49:22
проекта джанга потому что
00:49:25
обычно среди разработчиков джанга
00:49:28
принято называть функции немножко
00:49:30
по-другому а принято их называть
00:49:31
контроллерами но также
00:49:34
эти контроллеры эти функции иногда еще
00:49:38
называют в юхе Я очень редко так
00:49:40
использую но тем не менее Если вы
00:49:42
услышите о том то что действительно
00:49:44
кто-то сказал в эфире Да вы сразу
00:49:46
понимаете о том что имеется ввиду
00:49:48
контроллеры в файле views.by по сути
00:49:52
самих функций может быть много в
00:49:54
различных файлов но когда мы говорим о
00:49:57
функциях которые находятся конкретно в
00:49:59
файле views.pi мы имеем ввиду всегда
00:50:02
контроллеры и поэтому нам важно здесь
00:50:04
понимать и запомнить это слово что то мы
00:50:07
будем создавать здесь именно контроллеры
00:50:09
Хотя по сути это будут обычные функции
00:50:11
Давайте создадим первую функцию которую
00:50:14
назовем собственно индекс это функция
00:50:17
этот контроллер будет отвечать за
00:50:19
отображение шаблона или HTML в эту
00:50:22
функцию мы Передаем параметр request
00:50:26
на котором поговорим немножко позже
00:50:28
отдельно сейчас просто примем как за
00:50:30
данные о том то что в данный контроллер
00:50:33
как-то каким-то образом приходит
00:50:35
переменная request и каким-то образом
00:50:37
она срабатывает пока просто как за такое
00:50:40
некое волшебство у нас данная функция
00:50:43
будет очень маленькая она сразу будет
00:50:44
возвращать какое-то значение у нас даже
00:50:46
джанга сразу нам подсказывает что мы
00:50:49
можем использовать функцию рендер по
00:50:51
сути потому что она очень часто
00:50:52
используется как раз таки используется
00:50:54
для рендера определенного шаблона мы
00:50:57
возвращаем результат функции рендер и
00:50:59
как вы видите у нас здесь есть два
00:51:02
обязательных параметра это request и
00:51:04
template name request понятно откуда
00:51:07
взять у нас он в целом проходит функцию
00:51:09
а template name по сути название нашего
00:51:12
шаблона который мы хотим отобразить
00:51:14
Передаем request и Передаем название
00:51:17
нашего шаблона продукт
00:51:21
индекс HTML Все наша функция она по сути
00:51:25
готова и мы можем начинать ее
00:51:28
использовать для того чтобы у нас
00:51:30
реально отобразился шаблон Нам
00:51:32
необходимо как бы нашу функцию наш
00:51:35
контроллер зарегистрировать то есть дать
00:51:37
ему определенный адрес по которому он
00:51:39
должен отображаться потому что у нас
00:51:41
сейчас просто нет никакого адреса по
00:51:43
которому должен отображаться данные
00:51:45
контроллер
00:51:47
мы переходим Помните у нас есть здесь
00:51:49
urls.pi мы переходим сюда и здесь мы
00:51:54
создаем новый адрес по которому нас
00:51:57
будет отображаться данная страница мы на
00:52:00
основе вот предыдущего адреса Да тоже
00:52:03
используем функцию Pass мы здесь не даем
00:52:07
Никакое название по сути можно дать
00:52:09
какое-то название Но помните У нас есть
00:52:12
главная страница которая изначально нас
00:52:15
приветствовала было написано
00:52:17
Jango спешка установлен поздравляем вас
00:52:20
и я говорил о том что нам нужно
00:52:21
переопределить данную страницу так вот
00:52:24
чтобы переопределить мы полностью просто
00:52:26
оставляем пустую строку Это означает что
00:52:29
у нас будет считаться главная страница и
00:52:31
она переопределит автоматически тут
00:52:33
дефолтную страницу то есть мы не
00:52:35
добавляем никаких следов Ничего просто
00:52:37
пустая страница далее параметры мы
00:52:40
указываем контроллер который нам
00:52:42
необходимо здесь как раз таки
00:52:45
использовать для начала мы вообще
00:52:48
импортируем мы Обращаемся к приложению
00:52:51
продукции views и здесь у нас индекс
00:52:54
поэтому мы здесь Передаем ссылку на
00:52:56
функцию индекс и вот этот момент очень
00:52:59
важен я к нему еще вернусь и здесь
00:53:01
Передаем название Нам нужно будет в
00:53:04
дальнейшем Когда будем уже работать
00:53:06
непосредственно в самих шаблонах пока
00:53:09
просто напишем имя но мы к этому
00:53:12
параметру Вернемся позже поймем Для чего
00:53:14
он действительно нужен
00:53:16
все по сути вот таким вот образом мы
00:53:19
передали всю информацию которая нам
00:53:22
необходима Теперь мы можем попробовать
00:53:23
запустить сервер
00:53:27
и пробуем сейчас открыть нашу страницу и
00:53:31
посмотреть что у нас там отображается
00:53:33
открываем И как вы видите у нас теперь
00:53:36
переопределена страница у нас конечно же
00:53:39
пока нет никаких стилей потому что мы
00:53:41
собственно просто не переносили но сама
00:53:44
страница перепределена и в целом по HTML
00:53:48
шаблона видно что у нас отображается все
00:53:50
как нужно то есть у нас вся наша
00:53:52
структура она сохранилась Поэтому нам
00:53:55
нужно что сделать это только добавить
00:53:57
еще стиль Давайте Вернемся сюда обратно
00:54:02
и мы с вами сейчас как раз таки да
00:54:06
поговорим про стили про статику как ее
00:54:09
добавить
00:54:12
Давайте перейдем сюда на шаблон И как вы
00:54:15
видите Да у нас здесь все подсвечивается
00:54:16
то есть
00:54:18
HTML шаблон просто не может найти эту
00:54:20
папку вендор Чтобы отобразить нужные
00:54:23
стили Каким образом это можно сделать
00:54:25
так мы переходим на рабочий стол
00:54:29
и здесь у нас в одном окошке открыт наш
00:54:33
проект в этом окошке открыт шаблон
00:54:36
нашего проекта и по сути нам нужно
00:54:38
перенести просто папку вендер Давайте
00:54:40
откроем непосредственно наш проект
00:54:43
создадим здесь папку Статик
00:54:47
и в папку Статик мы перенесем наш вот
00:54:50
этот Весь вендер вот сюда скопируем и по
00:54:54
сути все вставим Давайте посмотрим что
00:54:55
здесь хранится вся нужно нам информации
00:54:58
Да вроде все ОК
00:55:00
все это можно свернуть возвращаемся в
00:55:03
наш проект у нас здесь появилась
00:55:05
появилась папка Static но этого все
00:55:07
равно недостаточно Нам нужно перейти в с
00:55:10
этим с точка пай
00:55:12
Как вы помните у нас здесь есть стать
00:55:15
URL который говорит о том где у нас
00:55:17
располагается статика в том плане По
00:55:19
какому адресу то есть у нас статика в
00:55:23
любом случае она будет храниться вот по
00:55:25
такому пути и далее там путь уже вендер
00:55:29
имидж примеру и так далее То есть должен
00:55:31
быть какой-то путь но этого недостаточно
00:55:34
нужно сказать что Джан готов к какой
00:55:37
папке именно хранить со статика и для
00:55:39
этого мы используем команду переменную
00:55:42
вернее стать файл dears
00:55:45
обращаю Ваше внимание Да что здесь у нас
00:55:47
указано именно множественное число dears
00:55:51
директории не просто DIR А директории
00:55:54
поэтому как бы само название перемены
00:55:57
намекает нам о том что здесь должен быть
00:56:00
либо список либо кортеж То есть это из
00:56:03
курса бетона да вы должны помнить о том
00:56:05
что такой список что такое кортеж по
00:56:08
сути на ваш вкус Вы можете использовать
00:56:10
либо здесь список либо кортеж я обычно
00:56:13
использую кортеж Ну давайте двумя
00:56:15
способами сделаем потому что в целом в
00:56:17
джанга проекте несколько раз будет у нас
00:56:20
появляется похожая структура когда нужно
00:56:22
будет выбрать либо список либо кортеж Я
00:56:25
буду всегда выбирать кортеж Но есть одно
00:56:28
важное различие именно в рамках джанка
00:56:31
не именно в рамках тип данных список и
00:56:35
карташа именно в рамках только Джанго
00:56:37
так вот мы здесь указываем путь до
00:56:41
наши папки Статик а именно следующим
00:56:44
образом то есть Base DIR нам нужно
00:56:47
дальше склеить путь до нашей папки
00:56:50
Статик помните да эту переменную бы
00:56:53
издир которую мы с вами уже видели в
00:56:56
переменной баз данных и здесь мы придаем
00:56:58
Статик вот таким вот образом Да мы
00:57:01
сделали то есть у нас в целом список из
00:57:04
одного элемента Ну покрасили было бы
00:57:07
сделать вот таким вот образом опять
00:57:09
ждать может быть несколько каталогов со
00:57:12
статикой и поэтому здесь список да то
00:57:15
есть там можно еще добавлять какие-то но
00:57:17
у нас проекте будет всего лишь одна
00:57:20
один элемент
00:57:22
возвращаясь к кортежу до который Обычно
00:57:24
я использую
00:57:25
главное различие в том что если у нас
00:57:28
retech из одного элемента обязательно
00:57:30
сто процентов обязательно нужно в конце
00:57:33
ставить запятую если у нас из одного
00:57:35
элемента кортеж Почему Потому что если
00:57:38
мы не поставим запятую
00:57:40
как бы питон будет читать что это у нас
00:57:43
не кортеж а просто строка и тогда Ну
00:57:46
ничего Не сработает
00:57:48
вот мы добавили данную переменную Теперь
00:57:50
мы с вами вернемся в индекс HTML и здесь
00:57:53
исправим следующий момент То есть у нас
00:57:55
здесь все равно до сих пор дарить
00:57:58
оранжевеньким Здесь нам нужно добавить
00:58:01
папку достать их видите уже перестал
00:58:04
сами пути у нас пока остаются тоже
00:58:06
подсвечены потому что у нас нет пока
00:58:09
страниц с данными путями
00:58:12
и вот здесь тоже мы как бы исправляем
00:58:15
Статик здесь не обращаем внимание данный
00:58:18
скрипт он хранится посредственно в
00:58:21
интернете если мы перейдем по данному по
00:58:24
данной ссылке Да Увидим что здесь
00:58:25
большой скрипт Это не очень хорошо на
00:58:28
самом деле хранить обращение к скрипту
00:58:31
вот в интернет потому что может попасть
00:58:34
интернет или просто сайт перестанет
00:58:36
работать поэтому рекомендуется скачивать
00:58:39
все скрипты и хранить у себя
00:58:41
непосредственно в папке Статик но у нас
00:58:43
для обучения Поэтому нам это не так уж и
00:58:46
страшно
00:58:47
и здесь мы тоже меняем на Статик Давайте
00:58:50
перезагрузим наш сервер перейдем на
00:58:53
страницу и обновим ее как вы можете
00:58:55
заметить Да теперь у нас пригрузились
00:58:57
все
00:58:58
стили и все отображается успешно То есть
00:59:01
как нам и необходимо было сделать
00:59:04
Давайте такую же процедуру мы с вами
00:59:07
сейчас проведем из страницы продавца
00:59:10
Давайте перейдем к тому моменту чтобы
00:59:13
создать здесь еще один контроллер для
00:59:16
отображения непосредственно
00:59:20
шаблона с продуктами и делается
00:59:22
следующим образом мы создаем здесь
00:59:24
контроллер products и даем параметр
00:59:27
request далее Return render то есть нам
00:59:31
это уже все знакомо здесь только другое
00:59:34
название это продукция HTML далее
00:59:37
возвращаемся в urls.pi смотрите в
00:59:40
причарами очень удобно тем то что можно
00:59:43
дублировать строчки горячие клавиши по
00:59:46
идее на Windows это будет Control + D
00:59:51
Вот такая аналог OS это будет команд
00:59:54
плюс D
00:59:56
так
00:59:57
плюс Да вот так я нажимаю даю мне
01:00:01
дублируется
01:00:03
экономит время иногда
01:00:05
здесь прописываем уже путь продукцию
01:00:08
далее У нас ссылка на функцию produx
01:00:11
давайте импортируем И здесь тоже У нас
01:00:14
будет продаваться вот таким вот образом
01:00:17
Теперь если мы перезагрузим и перейдем
01:00:20
сюда обратно обновим Понятно У нас пока
01:00:23
не работает здесь ссылки потому что у
01:00:26
нас пытается перейти на HTML нас такого
01:00:29
нету мы потом будем это исправлять Когда
01:00:31
будем работать непосредственно в самих
01:00:33
шаблонах А сейчас пока просто вручную
01:00:37
идем продукцию
01:00:39
и чтобы он сам нас отображается Да но
01:00:42
нам необходимо отправить еще стили то
01:00:46
есть мы переходим сюда и точно так же да
01:00:48
как и в предыдущем примере мы
01:00:52
добавляем здесь Статик чем еще Классно
01:00:55
да то что мы можем в почами сразу
01:00:58
добавлять нескольких несколькими места
01:01:01
одно и то же название что имеется ввиду
01:01:04
Я зажимаю на macos это Option будет на
01:01:08
Windows Попробуйте нажать или еще
01:01:12
какой-то горячую клавишу В общем должно
01:01:14
быть так что у вас отображается здесь
01:01:16
два курсора и вы сразу можете везде одно
01:01:19
и то же писать
01:01:21
так Смотрим следующий момент здесь вот
01:01:25
как раз таки с со слайдами
01:01:28
Статик
01:01:31
и дальше у нас карточки с товарами здесь
01:01:34
по сути таким вот образом это все
01:01:36
делается Я просто во всех сейчас это как
01:01:39
раз таки исправлю
01:01:51
все окей Мы закончили Давайте еще раз
01:01:54
обновим
01:01:55
теперь перейдем сюда обновляем нашу
01:01:58
страницу и все отображается успешно
01:02:00
Значит все окей работает все у нас
01:02:03
отлично шаблоны все отображаются мы
01:02:06
сделали то что хотели
01:02:09
по сути на этом все момент который я
01:02:12
хотел с Вами еще обсудить который
01:02:13
достаточно важен это о том откуда
01:02:16
берется переменная request И сейчас мы с
01:02:18
вами это обсудим то что я хотел
01:02:19
рассказать про переменную request и
01:02:22
откуда она вообще у нас берется вообще
01:02:24
на самом деле переменная request которая
01:02:27
передается непосредственно в контроллере
01:02:30
который Мы создали индекс или produx это
01:02:33
переменная является экземпляром либо
01:02:36
вернее или объектом класса http request
01:02:40
то есть что имеется ввиду Давайте
01:02:44
Вернемся коду Возможно это слайд
01:02:47
презентации вам дальнейшем поможет
01:02:49
ссылка на документацию сможете пройти
01:02:51
подробнее прочитать про класс http
01:02:54
request есть точно такой же класс
01:02:56
который называется теперь response но мы
01:02:59
не будем говорить позже сейчас нас
01:03:01
интересует именно непосредственно теперь
01:03:04
квест то есть Да откуда берется
01:03:07
переменная Мы же данную функцию индекс
01:03:09
нигде совершенно не вызывали Мы один раз
01:03:12
её использовали только вот здесь и мы
01:03:16
я тогда сказал обратить внимание Да мы
01:03:19
не вызывали функцию а передавали всего
01:03:21
лишь ссылку на данную функцию И в чем
01:03:24
интерес в том то что здесь функция пас
01:03:27
Она и так вызывается и как бы мы в
01:03:30
функции пас не можем сразу вызвать
01:03:32
функцию индекс мы Передаем всего лишь
01:03:35
ссылку на данную функцию и уже внутри
01:03:39
функции ПАЗ у нас будет вызываться
01:03:43
функция индекс где будет передаваться
01:03:46
переменная request и который является
01:03:50
как раз таки экземпляром класса что
01:03:52
теперь квест и поэтому здесь мы
01:03:55
непосредственно уже можем принимать
01:03:57
данную переменную и потом ей
01:03:59
пользоваться мы на самом деле в
01:04:01
дальнейшем посмотрим что В себе хранить
01:04:02
данная переменные request там достаточно
01:04:04
много информации очень полезно Там
01:04:07
информация пользователя о том где был
01:04:09
выполнен данный запрос и так далее квест
01:04:12
переводится как запрос поэтому тоже
01:04:15
здесь важно понимать вот это как бы
01:04:19
такая дополнительная информация сейчас
01:04:21
возможно когда только вы начинаете
01:04:23
изучать жанга не особо стоит принимать
01:04:25
это прям сильно к сведению потому что и
01:04:28
так может быть очень много всякой
01:04:30
различной информации но потом в
01:04:32
дальнейшем Когда вы уже будете
01:04:33
достаточно хорошо понимать разработку
01:04:36
приложений на Джанго вообще разработку
01:04:38
проекта на Джанго Вы можете вспомнить
01:04:41
Ага есть такой маленький
01:04:44
в котором Валера рассказывал про про то
01:04:48
где берется переменная request и вы как
01:04:50
раз таки откроете этот маленький кусочек
01:04:52
вспомните читайте там документацию вот
01:04:55
здесь что же из себя представляет данная
01:04:58
переменная это просто полезно знать а не
01:05:02
слепо использовать это вот такая вот
01:05:05
информация
01:05:07
До новых встреч Подписывайтесь и ставьте
01:05:10
колокольчик а комменты пишите под видео
01:05:13
если не подпишешься вычислил по IP
01:05:20
[музыка]

Описание:

Данный курс на YouTube - сильно укороченная (демо) версия полного курса, который вы можете приобрести на stepik (с карточкой из РФ) или Udemy (с карточкой не из РФ) Купить полный курс на stepik: https://stepik.org/course/125859/pay?promo=YOUTUBE - получите скидку 30% Купить полный курс на udemy: https://www.udemy.com/course/django-full/?referralCode=795EC1E656910301FB5C Все курсы от EngineerSpock: https://offer.engineerspock.com/ ***** Подпишись на канал в Telegram: https://t.me/engineerspock_it Подписка на Boosty: https://boosty.to/engineerspock Донаты на развитие: https://pay.cloudtips.ru/p/1f080f72 Чат в Telegram: https://t.me/python_devs ***** Шаблон сайта: https://github.com/vprinz/store-template-course Завершённый код проекта: https://github.com/vprinz/store-server-django/tree/master ***** Начинаем курс по Django - фреймворку для веб-разработки, написанному на Python. Согласно исследованиям, Django - самый популярный фреймворк для web development. Разумеется, для того чтобы освоить этот курс вы должны обладать изрядными знаниями самого языка программирования Python. Без этого вам просто будет ничего или многое непонятно. Знание языка Python - необходимая база. Желательно знать основы вёрстки на HTML и CSS. В этом курсе разбираем Django 3. Django 4 почти ничем не отличается, все самые важные нововведения в Django 4 будут отдельно освещены. Курс программирования Django станет отличным стартом для погружения в веб-разработку. Django уроки в этом курсе сделаны практикующим питонистом Валерием Павликовым. Цель курса по Django - ввести в тему новичков, поэтому некоторые вещи подаются в упрощённом виде, без академизма. 0:00:43 Обзор файлов в корне проекта Django 0:12:47 Локальная разработка и разработка в продакшене 0:16:13 Модель базы данных 0:20:15 Приложения Django 0:27:42 Обзор файлов в приложении 0:33:44 Как работает Django 0:46:18 Создание контроллеров 1:02:19 HttpRequest Django

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Полный курс по Python Django # Курс программирования Django # Django уроки # 2"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Полный курс по Python Django # Курс программирования Django # Django уроки # 2" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Полный курс по Python Django # Курс программирования Django # Django уроки # 2"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Полный курс по Python Django # Курс программирования Django # Django уроки # 2" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Полный курс по Python Django # Курс программирования Django # Django уроки # 2"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Полный курс по Python Django # Курс программирования Django # Django уроки # 2"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.