backend/django

각종 장고 에러코드 정리 (1.10 에러)

seul chan 2017. 3. 25. 20:20



Reverse for '' with arguments '' and keyword arguments '{}' not found 에러


=> ('posts:post-list')와 같은 형태로 넣어줬어야함... OTL


django module not found error


새로운 장고 폴더를 만들고 Django-admin startproject _____ 를 실행하였는데, 

no module named setting error가 갑자기 떴다.

pyenv, virtualenv를 활용하여 새로 가상환경을 셋팅해놨는데도 불구하고 그래서 개발 환경의 문제는 아닌 것 같고, Django setting의 문제일 것이라고 생각하여 구글링을 해보았다.


많은 글들을 봤는데 그 결과 중

http://stackoverflow.com/questions/13775780/django-1-5b1-executing-django-admin-py-causes-no-module-named-settings-error

여기서 해답을 찾을 수 있었다.


우선 DJANGO_SETTINGS_MODULE의 문제라고 하여 더 



env | grep DJANGO_SETTINGS_DODULE 
을 사용하여 기본 설정을 보았더니 wpsblog.settings 로 되어 있었다. 
그래서 export DJANGO_SETTINGS_MODULE= 로 default로 설정하였더니 문제가 해결되었다...만. 
댓글들을 보니 또 마땅히 좋은 해결책은 아닌것같고. PYTHONPATH 문제라고 하는 사람들도 많은데 일단 해결했으니 패스...


=> 이전에 jango-setting-module을 활용해서 장고 run server setting을 설정했던 것 때문에 그렇다! 근데 가상환경 내 .env 파일에 등록하였는데 전체 환경 변수가 바뀌는건지... 더알아보자

01. Django_Setting_Module을 이용해서 장고 세팅 관리하기

일단 runserver 할 때 development 파일 불러오는 방법

  1. 환경 변수 (Environment variable)
  • DJANGO_SETTINGS_MODULE을 수정하여 기본 값을 확인 가능

  • manage.py에서 확인할 수 있다. 근데 이 값을 바꿔버리면 default로 개발 버전이 사용이 되기 때문에 manage.py를 바꾸지 않고 환경 변수를 지정해준다.

  • 환경 변수 지정은 다음과 같다. export DJANGO_SETTINGS_MODULE='wpsblog.settings.devlopment'

  • 이제 runserver를 실행시켜보면 using settings 'wpsblog.settings.development'라는 말이 뜨면서 개발 버전의 서버가 실행될 것이다.

  • 이를 매번 등록하기 귀찮기 때문에 .env 파일에다가 등록 해두면 폴더 들어올 때마다 설정이 될 것이다.

  • 엄청 큰 의미가있다! pyenv와 비슷한 의미를 가지는데 ...

==> 이 내용들 떄문이였다!, 결국 reset을 해야하는데, 


> export DJANGO_SETTINGS_MODULE = django.conf.global_settings


이게 해결책이다.

장고 settings docs: (https://docs.djangoproject.com/en/dev/topics/settings/)

이후 

> python manage.py diffsettings 

에서 달라진 세팅값들을 확인할 수 있다...고 했는데


위의 설정값을 설정하자 이제는



"django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty."


라는 에러 메세지가 나왔다...



==> 해결책


'export DJANGO_SETTGINS_MODULE='

은 현재 프로젝트의 장고 세팅 모듈을 불러오는 것, 

계속 settings.development라고 뜨는 것은 tmux 새로운 세션을 열었을 때의 기본값이였기 때문이었다...

그래서 'export DJANGO_SETTINGS_MODULE=projectname.settings' 라고 바꿔주고 tmuxf를 재시작하니 해결되었다.

(동욱님 감사합니다...)


쉬운 길을 계속 돌아가는 것 같지만 언젠가는 도움이 되겠지? 그랬으면 좋겠다.