Задать вопрос
@Dato38it

Как скрыть токены и пароли в python?

захотел скрыть некоторые токены и пароли из файла settings, но почему-то возращает ошибку 500 в браузере после перезагрузки сервера:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at admin@dato138it.ru to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
Apache/2.4.52 (Ubuntu) Server at dato138it.ru Port 80

эта ошибка я заметил появляется как только я добавляю саму библиотеку from dotenv import load_dotenv. Вот каким образом я все это пытался организовать.
Файл dato138it/.env:
DB = {'default': {'ENGINE': 'django.db.backends.postgresql', 'NAME': 'dato138it', 'USER': 'tuser', 'PASSWORD': 'tpassword', 'HOST': '188.225.34.21', 'PORT': '5432',}}

файл dato138it/.settings.py
import os
from dotenv import load_dotenv
...
load_dotenv()
DATABASES = os.getenv('DB')
.

Я что-то делаю не так? да, еще я пробовал отдельно писать переменные пароля например - все тоже самое
dotenv библиотека установлена
  • Вопрос задан
  • 257 просмотров
Подписаться 1 Простой 9 комментариев
Решения вопроса 2
С чего вы взяли, что в .env можно писать JSON (да ещё и невалидный)?
https://pypi.org/project/python-dotenv/#file-format
Ответ написан
@nemolayn
Создатель бота Nemo
В файле нельзя писать json. Только (внизу пример, название и содержание переменной а также их количество регулируется вами)
BOT_TOKEN=""
Валидный расшифровщик для BOT_TOKEN:
from pydantic_settings import BaseSettings, SettingsConfigDict
from pydantic import SecretStr

class Settings(BaseSettings):
    bot_token: SecretStr
    model_config: SettingsConfigDict = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8")

config = Settings()

Приминение расшифровщика (например путь до файла с расшифровщиком это ./utils/config.py):
from utils.config import config

print(config.bot_token.get_secret_value())
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы