[ErrorCatcher 1] settings.py

LILO Ghim·2021년 11월 28일
0

Django 환경변수 관리 체크

django 초기 세팅(settings.py)시 datebase 세팅을 my_settings.py에서 별도 작성하였던 것을 이제 django에서 os를 import를 해서 setting을 변경하는 중에 발생한 error와 앞으로 error를 대하는 error catcher가 가져야 하는 자세를 위한 포슽힝

먼저, setting 순서를 복기해보면,

1) vi ~/.zshrc로 파일을 열어 setting에 필요한 내용을 작성
2) source ~/.zshrc
3) python shell에서 import os os.environ으로 작성한 내용 확인
4) OS를 import 해준 뒤, 아래 코드와 같이 os.environ에서 keyword로 해당 값을 불러오도록 수정한다.
5) 환경변수를 사용하는 파일에서 from django.conf import settings 변수를 불러와 사용한다.


-> zsh 작성


-> os.environ


-> settings.py 수정

이때, error catcher는 그냥 되는 법이 없지!

error를 만나게 되는데,

ModuleNotFoundError : No module named 'django.conf.settings'

settings를 불러올 수 없다는 error,,,,

  from django.conf     			import settings				   #1
  from django.conf.settings		import ALGORITHM, SECRET_KEY   		   #2

#1에서 #2로 시도를 해보고,
관련은 없겠지만, installed app에도 추가를 해보았지만,

실.패.

결국, request.user 대제전(https://velog.io/@kimlilo/Django-Decoratorsignin) 때처럼
한. 줄. 한. 줄. 찍. 어. 봅. 시. 다.


python shell에서,

  
import django
django.conf
<module 'django.conf' from '/opt/homebrew/Caskroom/miniconda/base/envs/westagram/lib/python3.8/site-packages/django/conf/__init__.py'>

django.conf.__dir__()  
['__name__', '__doc__', '__package__', '__loader__', '__spec__', '__path__', '__file__', '__cached__', '__builtins__', 'importlib', 'os', 'time', 'traceback', 'warnings', 'Path', 'django', 'global_settings', 'ImproperlyConfigured', 'RemovedInDjango40Warning', 'LazyObject', 'empty', 'ENVIRONMENT_VARIABLE', 'PASSWORD_RESET_TIMEOUT_DAYS_DEPRECATED_MSG', 'DEFAULT_HASHING_ALGORITHM_DEPRECATED_MSG', 'SettingsReference', 'LazySettings', 'Settings', 'UserSettingsHolder', 'settings', 'locale']

# 정상입니다
  
django.conf.settings
<LazySettings "Westagram.settings">
 
django.conf.settings.__dir__()
['djklfs', 'sdjkfl', 'sdjkfl', ................., 'ALGORITHM', ......, 'SECRET_KEY', ...........]

# 정상입니다
  

django.conf.settings.ALGORITHM
'HS256'

# 잘나옵니다

django.conf.settings.SECRET_KEY
'django-insecure-mnf!f..............5pe-&=lc50@c98_(6t'

# 잘나옵니다


import os
os.environ["SECRET_KEY"]
'django-insecure-mnf!f..............5pe-&=lc50@c98_(6t'

# 잘나옵니다
  

결론은,
이 시점에서 settings를 모듈로 불러와서 환경변수를 설정하는 것에는 실패하였고,
변수를 사용할 때, settings.SECRET_KEY와 같이 직접 지정해주는 방법으로 해결하였다. 하지만 왜 직접 불러와 지지 않는지는 추후 업데이트 하는 것으로,,,

!!!

error를 만났을 때, 내가 의도한 대로 작동하도록 그 error자체를 해결하는 것과,
반면에 다른 방향으로 방법을 찾아야 하는 경우가 있겠지만,
예를 들어, 위와 같이 내가 setting 한 값들이 정상적으로 설정이 되었고 확인이 되었다면, load하는 다른 방법을 찾는 것으로 error를 해결하는 방향으로 사고회로를 회전시켜야 한다는 것(훈화말씀 중)을 알았다.(terminal에서 볼 것인지, view 안에서 볼 것인지)
그럼 그것을 판단할 수 있는 시점은 내가 어떻게 알 수 있지? 고민이 깊다!


엪히솓으)
source ~/.zshrc을 하면 가상환경이 원.래. base로 돌아가니 놀라지 말자... 다 있다... 쥐쉘 싫............

profile
킴릴로

0개의 댓글