ym104432846
Вставьте ссылку на видео из Youtube, Rutube, VK видео
Задайте вопрос по видео
Что вас интересует?
00:00:16
Создание файла конфигурации .env:
  • 1. Создать файл `.env` для хранения чувствительных данных (логины, пароли), который не будет загружаться в репозиторий GitHub и останется локальным на компьютере разработчика
  • 2. В проекте создать дополнительный файл `config.py`, куда будут перенесены настройки подключения к базе данных, Redis и другие параметры работы приложения
  • 3. Использовать новый подход импорта переменных окружения (`.env`) через библиотеку `python-dotenv`
00:01:52
Использование пайдентика для настройки приложения:
  • Создан отдельный класс с настройками, который наследуется от `pydantic.BaseSettings`
  • В классе указаны типы переменных (строка и целое число)
  • Указан путь к файлу конфигурации (`enf`)
00:04:09
Валидирование и создание динамических переменных:
  • 1. Обсудили возможность задания Data URL через пайдентик и решили использовать декоратор-валидацию данных
  • 2. Предложено создать переменную динамически через импортируемый валидатор
  • 3. Рассмотрели вариант задания адреса через фстринг и пришли к выводу, что красивый способ предпочтителен
00:04:54
Генерация базы данных и настройка URL:
  • 1. Разработана функция получения ДТБ (динамического тестового набора) из URL, принимающая пайдентик класс и дополнительные параметры
  • 2. Создана новая переменная `data` для хранения результата генерации строки с параметрами, использующая f-string
  • 3. Подтверждена работоспособность предложенного способа генерации динамической переменной через пайдентик
00:06:23
Импорт переменных из файла конфигурации:
  • 1. Импорт переменной `data base url` планируется осуществлять не из настроек (`settings`), а из конфигурационного файла (`config.settings`)
  • 2. Для хранения чувствительных данных решено создать отдельный файл, который будет игнорироваться системой контроля версий и недоступен другим пользователям
  • 3. Все настройки и параметры будут аккумулироваться в единственную переменную `settings`, доступную через обращение к файлу конфигурации
0: Итак, мы научились делать миграции, делать модели. Теперь нам очень важно понять, как вынести чувствительные данные из вот этих файлов. Их нельзя здесь хранить. Просто запрещено навсегда. Забудьте. Нельзя хранить данные в открытом виде. Их нужно
1: Хранить в отдельном файле. Причём, когда мы будем на github, например, загружать наш код, весь наш проект, файлик с чувствительными данными, с паролями, с логинами будет игнорироваться, он не будет идти в github, он будет храниться где-то у вас локально на компьютере такой
2: Файлик обычно называется точка энф. Давайте создадим его точка энф. Это простой, по сути, текстовый файлик, где мы можем. Так, давайте здесь локал хост вернём, где мы можем вот это дело вот так скопируем, хранить
3: Чувствительные данные. Здесь синтаксис немножко другой. Пробелы не нужны и кавычки тоже не нужны. Мы их убираем здесь тоже убираем. И, собственно говоря, вот эти данные мы уже будем некоторым образом
4: Импортировать в python, в наш проект, в отдельный файл, который мы назовём конфиг точка пай, конфиг точка пай, и здесь будут храниться все данные о подключении к базе данных, к редису, с которым мы тоже познакомимся, и от других от
5: Почтой, с которой мы будем работать и так далее. Соответственно, отсюда мы пока эти данные все удаляем. Здесь, конечно, будет ошибка, но нам пока не страшно. Мы хотим в конфиг пай, давайте все остальное закроем, создать некоторые
6: Класс с настройками. И мы будем использовать такой Новомодный способ импортирования вот этих переменных окружения энф, да, энвайрмент окружения через пайдентик. Мы из пайдентик импорти.
7: Base settings.
8: Если вам интересно, как обычно делается, вы можете посмотреть в моём курсе на YouTube, а сейчас мы будем пользоваться более таким классным способом на мой взгляд, мы создаём отдельный класс с настройками ну, назвать его можно как угодно, но главное, что мы наследуемся от пайдентиком Бейс сеттингс.
9: И здесь достаточно задать вот эти все переменные. Давайте их как-нибудь скопируем красивенько все, все вместе и сюда вставим. И здесь мы, конечно же, их можем провалидировать тут ж
10: Почему нет, давайте напишем для каждой тип. Вот здесь мы знаем, что user pass name и ghostt это у нас строка, а порт это у нас integer.
11: И помимо этого, чтобы, чтобы пайдентик понял, из какого файла нам нужно забирать настройки, давайте здесь его и укажем. Это делается через ещё внутренний класс внутри нашего класса он называется конфиг и
12: Здесь мы указываем энф файл, как он называется.
13: Точка энф. Собственно, здесь может быть любое название не обязательно называется точка энф. Вы можете его называть там энвайрмент вариаблс просто вот так обычно принято, поэтому мы так делаем и вроде все хорошо. Давайте после этого создадим экземпляр.
14: Класса. Это делается вот так и просто. Проверим, что все работает. Давайте вот здесь выведем на печать сеттингс, например, db host давайте запустим наш файл config пай в консоли, вобьём пайтон 3 9.
15: Находясь в корне директории да, что важно, здесь находится файл энф и укажем адрес нашего файла app config точка пай.
16: Поймёт ли у нас python? Ага, локал хост все прекрасно, то есть мы можем таким образом, через задание настроек в отдельном файле, точнее не настроек, а, ну да, на самом деле это какая-то некоторая конфигурация, может быть у нас здесь указан и режим разработки там.
17: Девелопмент продакшн тестинг что-то такое подобное мы тоже будем это делать и все эти данные доступны здесь и затем мы можем из settings да, from settings импортировать например вот data.
18: Url, чтобы его здесь не задавать. Встаёт вопрос а как data url прописать здесь? Ведь он состоит на самом деле из вот этих 5 переменных. И способ немножко корявенький, который я предложу, можно сделать вот следующим образом.
19: Settings. Давайте посмотрим сеттингс дейта без юрл равно и задать вот этот адрес как мы делали через ф стринг вот здесь но есть способ прямо через пайдентик это сделать он может не очень
20: Красивый, но давайте все-таки сделаем. Нам нужно из пайдентик импортировать валидатор. То есть это на самом деле декоратор, который служит для валидации данных, но мы немножко считери и создадим переменную таким динамическим образом через другие переменные
21: Назовём функцию получить дтб из url. Она принимает, как следует из документации, пайдентик класс и некоторые вельюс. Мы обозначим их в и мы добавим к текущим вельюс. Вот такие у нас есть вельюс ещё.
22: 1 переменную назовём её data без url и вот здесь уже пропишем как она генерируется также f strings можно на самом деле просто скопировать это все отсюда.
23: Вот так вставить. И у нас дб юзер находится уже внутри этого в да, в это у нас все параметры таким образом в квадратные скобки и в одинарных кавычках просто укажем наш
24: Переменную. Есть одинарные кавычки и value одинарные кавычки и велью. И вот таким нехитрым образом мы получим нашу, нашу строку, которая нам нужна. Давайте её, кстати, вернём здесь
25: Обязательно вернём обновлённые значения наших настроек и посмотрим, сработает ли у нас такая генерация.
26: Новой переменной запустим ещё раз и вуаля, все сработало. Юзер, постгресс, пароль, постгресс локалхост. Да, все, все отлично работает. Я честно пытался найти как через пайдентик вот нормально сгенерировать динамическую переменную, если вы знает,
27: Обязательно напишите в комментариях, чтобы другим людям было проще, но пока я пользуюсь таким способом.
28: Итак, давайте теперь вот эту переменную data base url импортируем не таким образом, а просто from кстати, ошибся не из settings, а из конфига импорт сеттингс и уже из settings мы скажем, что там
29: Есть вот такая вот переменная data base url давайте теперь все удалим и очень важно не забудем про миграции в следующий раз, когда мы будем их запускать, у нас возникнут проблемы. Если мы не изменим, что data base url мы импортируем не отсюда, а?
30: Из app точка конфиг, settings. И здесь уже укажем сеттингс точка дейта тюрел, чтобы по красоте все у нас было таким образом, чего мы добились на самом деле вот этими движениями мы вы
31: Несли все чувствительные данные, которые нам важны и которые мы не хотим распространять в отдельный файл. Здесь будет ещё много, много других различных параметров, ключей, которые мы не хотим светить. Мы создали отдельный файлик, который
32: Принимает все эти параметры, как-то их валидирует, при необходимости создаёт динамические параметры, переменные и затем все это аккумулирует в 1 единственной переменной сеттингс. Её можно называть также как угодно и
33: Потом мы можем во всех файлах, обращаясь к конфиг пай, к сеттингс, импортировать вот эти переменные, не волнуясь о том, что их кто-то увидит, да, потому что файлик энф мы поместим затем в
34: Определённый файл, который будет игнорировать его добавление куда-либо, и его никто не увидит в