Я прочитал, что небезопасно хранить SECRET_KEY
в settings.py
по умолчанию. Итак, я решил сохранить его в моем __init__.py
. Я написал в __init__.py
, что рядом с settings.py
:
export SECRET_KEY= 'hf7^vrmc!^agnpba#^+$9ac-@eullgd-=ckq&u1zu$b7nqc)%_'
Это единственная строка в моем __init__.py
. Затем в settings.py
я изменил строку
SECRET_KEY = 'hf7^vrmc!^agnpba#^+$9ac-@eullgd-=ckq&u1zu$b7nqc)%_'
на
SECRET_KEY = get_env_variable('SECRET_KEY')
, но при попытке запустить сервер я получаю синтаксическую ошибку, как показано ниже:
…
__init__.py", line 1
export SECRET_KEY= 'hf7^vrmc!^agnpba#^+$9ac-@eullgd-=ckq&u1zu$b7nqc)%_'
^
SyntaxError: invalid syntax
Что здесь не так? Заранее спасибо.
Я отредактировал свой код, как показано ниже, с помощью комментариев здесь, но все еще не удалось:
У меня SECRET_KEY = os.environ.get('SECRET_KEY')
в settings.py
, и export SECRET_KEY='hf7^vrmc!^agnpba#^+$9ac-@eullgd-=ckq&u1zu$b7nqc)%_'
в .bash_profile
. Это дает мне ошибку
3.7/lib/python3.7/site-packages/django/conf/__init__.py", line 126, in init raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.") django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty
Когда я копирую файл. bash_profile
из home/mydirectory
и вставляю его рядом с manage.py
проекта, в результате записи не возникает ошибки python manage.py runserver
в терминале. (Вышеупомянутая ошибка была в терминале именно с этой командой). Но, когда я startproject
из cPanel
и тестирую свой веб-сайт в браузере, я получаю ошибку There is something wrong
, и мой веб-сайт не работает. Я предполагаю, что происходит нечто подобное: когда я нажимаю startproject
из cPanel, он начинается с внешнего root, поэтому он видит, что у меня есть два экземпляра .bash_profile
. Однако, когда я go проецирую root из терминала и пишу python manage.py runserver
, он просто видит, что специфицирует c .bash_profile
внутри папки проекта. Это правильно? Если так, как я могу решить мою проблему, чтобы иметь безопасный SECRET_KEY
с доступным веб-сайтом?
Если я удаляю внутренний .bash_profile
и меняю BASE_DIR
на BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
(как здесь ссылка ), у меня не будет ошибки в terminal
по python manage.py runserver
. Это приводит:
System check identified no issues (0 silenced).
April 24, 2020 - 21:04:33
Django version 2.1, using settings 'myprojectt.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
, и это не даст ошибку SECRET_KEY
не может быть пустым. Но когда я нажимаю startproject
из cPanel
и go на свой домен из браузера, я получаю
`We're sorry, but something went wrong.`
Примечание: мой веб-сайт работает правильно, если я явно пишу SECRET_KEY
в settings.py
, НО без всякой безопасности