Step 5 (S-44781)

From Stepik Wiki
Revision as of 13:40, 6 August 2017 by Admin (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/14827/step/5

Step 5 (S-44781) 1.png

[00:00 - 00:18] а теперь давайте поговорим про конфигурацию джанго приложений а вообще конфигурации это неотъемлемая часть любого приложения а в некоторых фреймворк она сделана более сложно она сделана довольно простым образом


Step 5 (S-44781) 2.png

[00:18 - 00:37] а где то просто питон модуль обычный обычный файл располагается он вот здесь директорию проекта в директории default но приложение под именем с этим спи это как всегда


[00:37 - 00:54] а конфиг из себя представляет обычный код на питоне а но в основном там происходит декларацией каких то перемен перемены довольно много мы будем обращаться к ним


[00:54 - 01:11] по мере необходимости то есть когда будем говорить про разные части джанге а сейчас отметим те которые в принципе весьма важные важные перемены а переменная


[01:11 - 01:27] эта переменная показывают начиная с какого файла происходит поиск поиск контроллера то есть с какого файла начинается работа маршрутизатор junkie


[01:27 - 01:43] а в умолчанию как вы видите он указывает на файл и которые держат лежит приложение а далее настройка которую практически гарантированно придется менять


[01:43 - 02:02] эта настройка the basis это список баз данных к которым подключаются ваше приложение по умолчанию он состоит из 1 базы данных с именем the fall а здесь указывается движок баз данных это тестовый проект поэтому


[02:02 - 02:21] пользоваться склад простенькая база данных которая хранится локально в принципе может быть э большинство то но большинство существующих баз данных на сегодняшний день они могут быть подключены язык python и соответственно в django проект


[02:21 - 02:36] переменная template указывает список директорий где нужно искать а шаблон по умолчанию django ищет шаблоны


[02:36 - 02:55] именно в самих приложениях то есть внутри каждого приложения должна быть папка то там находится шаблон если у вас в вашем проекте шаблоны лежат в 1 месте вы должны эту директорию прописать в пельменной топлидерс чтобы шаблонизатор знал откуда брать шаблона


[02:55 - 03:13] а кроме того есть специальная переменная показывающее которых какие а какие приложения используются называется она installous


[03:13 - 03:28] это список в котором перечислены названия тех django приложения которые


[03:28 - 03:48] а используется активно в данном приложении в данном проекте а дело в том что не все приложения они находятся в директории проектов некоторые приложения они установленная в других системах директориях а лежат вместе с django где то


[03:48 - 04:07] далеки от вашего проекта чтобы подключить их нужно прописать вот здесь а в этой настройке а даже те ваши приложения которые вы создали сами внутри джанго проекта должны быть прописано в инста вот чтобы джанго подключил их


[04:07 - 04:26] например при валидации модель а ну в общем правило такое все приложение которое используется должны быть прописаны в списке он стал ups а важный момент который нужно обсудить это указание пути в конфиге


Step 5 (S-44781) 3.png

[04:26 - 04:44] а этот вопрос он касается вообще всех орков независимо от языка проблема заключается в следующем а ваш в проект ваше приложение может быть развернута произвольной директории


[04:44 - 04:58] ну то есть нельзя закладываться на то что приложения будут запускаться с какой то определенной директории администратор может решить что оно должно лежать в другую директорию либо а что чаще случается на 1 сервере


[04:58 - 05:13] может быть запущено несколько копий вашего приложения например несколько разработчиков работают на 1 сервере и разрабатывают приложения а соответственно приложение должно уметь работать из разных директорий


[05:13 - 05:29] как поступить мы ведь мы должны конфиги указать какие то пути путь к шаблонам например путь к файлу где лежит база данных если мы используем и скрывают а решение


Step 5 (S-44781) 4.png

Step 5 (S-44781) 5.png

[05:29 - 05:46] собственно говоря 3 решения можно использовать абсолютные пути в каждом шаблоне о в каждом конфиге то есть вас развернут какой то директории проект вы редактируете конфиг а и соответственно настраиваете пути под эту директорию


[05:46 - 06:05] это плохой вариант потому что он очень плохо работает система контроля версий если ваш приложениях нравится контроля версий это значит что вас каждый экземпляр не вошел про вашего проекта и самом краю встанет в контроля версий а он будет


[06:05 - 06:23] немножко изменен это очень неудобно а решение номер 2 использовать переменные окружения а это значит что каждый кто запускает проект должен указать какую то переменную окружения имеется ввиду системно то есть а в своей командной оболочке


[06:23 - 06:38] указать переменной окружения например прозак которая указывается местоположение а сам проект внутри себя уже получает эту переменную и относительно ее считают все пути


[06:38 - 06:55] это решение чуть получше и в принципе оно используется во многих проектах но оно не удобно тем что нужно указывать на то переменной про это забывают а идеальное решение было бы использовать относительные пути


[06:55 - 07:11] причем относительная никак в системе unix относительно текущей директории где находится пользователь относительно той директории где находится проект это могут быть разные директории а каким образом использовать относительные пути в конфиге


Step 5 (S-44781) 6.png

[07:11 - 07:26] для этого используется такой трюк этот трюк он может быть выглядит немножко по другому в зависимости от конфига оно смысл в следующем а в языках с динамической типизации


[07:26 - 07:43] возможно в других языках а часто бывает в такого рода перемена перемена подчеркивание подчеркивание file еще раз подчеркиваю это полное имя текущего исполняем текущего файла


[07:43 - 07:59] а в случае если эта переменная написана в конфиге то это полный путь к текущему конфигу в какой директории он не лежал то есть это путь к settings p в данном проекте а что мы делаем


[07:59 - 08:17] поскольку у нас с этим спи это просто код на питоне мы можем вполне импортировать какие то библиотеки а 1 что мы делаем мы получаем абсолютный путь а получаем абсолютно путь


[08:17 - 08:36] а с помощью функции dear name мы получаем а директорию в которой он находится потом вызываем еще раз поднимается на уровень выше таким образом мы получаем директорию проекта


[08:36 - 08:52] таким образом мы получили некоторые базир это директорию проекта и относительно данного раздела мы уже можем строить а все пути например путь к директории шаблонными путь


[08:52 - 09:10] а переменная стать и крут указывает где лежат статически файлы а это общее решение может быть использовано в любом фреймворке и это best practice очень хорошо когда проект не зависит от той директории в котором находится и может


[09:10 - 09:25] перемещаться из 1 директории в другую а 2 хороший прием который следует обсудить да мы говорим о конфиге local settings


Step 5 (S-44781) 1.png

[09:25 - 09:43] в чем смысл тогда создается конфигурация приложения я можно условно разделить на 2 части опции которые меняются редко и опции которые весьма вероятно будут разными меняться час а ну например


[09:43 - 09:58] список инсталл список установленных подключенных приложений либо а либо например то есть он спит с которого начинается поиск


[09:58 - 10:14] а вьюшки эти опции они меняются редко то скорее всего вообще никогда не будет меняться есть опции которые меняются часто например название базы данных которые нужно подключаться если у вас


[10:14 - 10:30] есть 2 разработчика у них у каждого своя база данных чтобы они друг другу не мешают они хоть опции будут различны а базы данных на боевом сервере будет отличаться от базы данных на тестовом сервере поэтому очень удобно хранить


[10:30 - 10:47] все настройки в 1 месте а если мы все настройки храним с этим спи а возникает противоречие каждый каждый участник хочет изменить с этим спит под себя а этот этот 1 файл которая лежит в системе контроля версий


[10:47 - 11:06] а я то неудобно поэтому помимо с этим спи рядом с ним создают файл local settings p а в конце файла с этим то есть в конце настроек впишут такую конструкцию


[11:06 - 11:22] это означает что нужна но здесь нас проект назывался пупкин поэтому название такой осталось что нужно из файла local settings перенести импортировать все настройки в текущий файл


[11:22 - 11:37] то есть а вот эта конструкция импортирует все настройки local settings в просто с этим оно и игнорирует ошибки стали случаться а файл local settings а выбирается из контроля версий


[11:37 - 11:53] то есть в каждой системе контроля версий есть возможность что бы чтобы не добавлять файл не отслеживать например а в get контроллер сидит есть специальный список и так называются


[11:53 - 12:08] куда можно добавить файлик settings local settings p мы его добавляем good игнор и этот файл он не попадает контроль версий а в итоге settings и в основном конфиге лежат


[12:08 - 12:24] те настройки которые редко меняются ну и либо возможно это настройки которые будут на боевом сервере а если каком то разработчику либо в каком то конкретном окружении нужно изменить настройки создается рядом с ним for local settings


[12:24 - 12:43] и настройки слопал settings они будут перекрывать либо дополнять настройки с основного файла это позволяет легко разделять конфигурацию и избегать при этом копипаста тех опции которые используются которая редко меняются