🤍 전 강의 25% 할인 중 🤍

2024년 상반기를 돌아보고 하반기에도 함께 성장해요!
인프런이 준비한 25% 할인 받으러 가기 >>

  • 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

생성하거나 수정하지 않은 app의 오류 문제

22.06.21 12:52 작성 조회수 131

1

안녕하세요 강사님.
 
1)
이번 강의를 들으면서 accounts app을 생성해서 vscode 상으로
instagram
accounts
media
askcompany 총 네 개의 app(폴더)가 보입니다.
 
2)
accounts의 모델을 수정하고 makemigrations-migrate accounts를 진행한 뒤 manage.py runserver를 실행할 때 아래와 같은 이슈가 감지됐습니다.
 
3)
You have 1 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): auth.
Run 'python manage.py migrate' to apply them.
 
4)
저는 'auth' app에 들어간 적이 없고 vscode에서 육안으로 확인되지도 않습니다.
 
5)
일단 강의 내용에 따라 서버/admin에서 profile을 생성하는데 문제는 없어서 auth app을 따로 makemigrations-migrate해주지는 않았습니다. 따라서 질문이 있는데
 
가) 나중에 문제가 될 것을 대비해서 'auth' app을 makemigrations-migrate 해줘도 될까요?
 
나) accounts app의 models를 작업했는데 auth app에서 오류가 생기는 경우는 어떤 상황인가요? (구체적인 '문제'가 발생한 건 아니라서 제 질문도 두리뭉실한 점 죄송합니다. 짧게 코멘트만 해주셔도 감사할 것 같습니다.)

답변 2

·

답변을 작성해보세요.

1

장고 버전 4.0.5은 이번 달에 출시가 되었는 데요

1) 장고 3.0.14가 설치된 파이썬인터프리터 혹은 가상환경에 장고 라이브러리를 업그레이드하셨을 수 있습니다. 이는 pip install --upgrade django 명령 혹은 pip install "django~=4.0.0" 등의 명령으로 업그레이드하실 수 있습니다. // 본 강의 외에 연습으로 슬쩍 업그레이드를 하셨을 수 있구요. 아직 migrate auth를 하지 않으신 상황(auth의 0012 미적용 상태)에서 강제로 장고 버전을 내리실려면, 가상환경 활성화 후에 pip install "django==3.0.14" 를 입력하시면 됩니다.

2) 혹은 현재 머신에 장고 3.0.14이 설치된 파이썬인터프리터 혹은 가상환경이 있고, 장고 4.0.5가 설치된 파이썬인터프리터 혹은 가상환경이 있는 것입니다. 그래서 엉뚱한 파이썬인터프리터 혹은 가상환경을 사용하고 계시는 거죠.

파이썬으로 개발할 때에는 현 프로젝트에 사용하는 파이썬 인터프리터 혹은 가상환경의 경로를 정확히 인지할 필요가 있습니다. 그렇지 않는다면 엉뚱한 버전의 라이브러리를 참조하거나, 라이브러리를 설치하였음에도 라이브러리가 설치되어있지 않다는 오류는 만나실 수 있습니다.

화이팅입니다. :-)

헷갈리실 때에는 가상환경을 제거하시고, 가상환경을 새롭게 생성하시고 원하시는 버전의 라이브러리를 다시 설치하시는 것도 한 방법입니다.

뤀쪼님의 프로필

뤀쪼

질문자

2022.06.23

감사합니다 :)

1

안녕하세요.

보여주신 폴더 instagram, accounts, media, askcompany 중에
장고 앱은 accounts와 instagram 입니다.
askcompany 폴더는 프로젝트 설정을 담아두며,
media는 models.FileField/models.ImageField를 통해 저장된 파일들이 저장되는 폴더입니다.

accounts와 instagram 앱 외에도 장고 기본에서 제공해주는 앱들이 있습니다. settings 내에 INSTALLED_APPS 설정을 보시면 django.contrib 으로 시작하는 이름들이 있을 것입니다. 이 앱들이 장고 기본에서 제공해주는 앱들이구요. 이 중에 django.contrib.auth 앱이 있습니다. django/contrib/ 폴더 안에 auth 이름의 장고 앱이 있는 것입니다. // auth 앱은 인증과 관련된 기능을 제공해주고 있습니다.

장고 기본에서 제공해주는 앱들에 대해서는 우리가 마이그레이션 파일을 생성해줄 필요가 없습니다. 우리가 관리하는 장고앱들이 아니니깐요. 장고가 관리하는 장고앱들에 대해서는 생성된 마이그레이션 파일에 대해서 적용만 해주면 됩니다. 그러니makemigrations auth는 불필요하며, migrate auth 는 필요할 것입니다.

아래 링크에서도 확인하실 수 있는 데요. 장고 3.0 버전에서는 auth 앱의 마이그레이션이 0011번까지 있습니다.
https://github.com/django/django/tree/3.0.14/django/contrib/auth/migrations (3.0에서의 마지막 버전)

장고 3.1 버전에서는 auth 앱에 0012번 마이그레이션이 추가되었네요.
https://github.com/django/django/tree/3.1/django/contrib/auth/migrations (3.1에서의 첫 버전)

그러니 아래의 메세지. 즉, auth 앱에서 1개의 미적용 마이그레이션 내역이 있습니다. 라는 메세지는

You have 1 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): auth. 

장고 3.0일때 장고 프로젝트를 생성하시고 초기에 python manage.py migrate 하셨을 때에는
auth 앱에서 0011번까지 마이그레이션이 수행되었을 테구요.

그 이후에 장고 버전을 3.1 이상으로 올리셨으니, auth 앱에서는 0011번까지 수행된 상황이며 미수행된 0012가 있어서 위 경로 메세지가 출력되는 것입니다. 그러니 python manage.py migrate auth 명령으로 미적용 마이그레이션까지 적용하시면 됩니다.

현재의 장고 버전은 python manage.py --version 명령으로 확인하실 수 있습니다.

화이팅입니다. :-)

뤀쪼님의 프로필

뤀쪼

질문자

2022.06.21

제 뒤통수에서 보고 계신 것처럼 정확하시네요. 감사합니다. 말씀해주신 것처럼 askcompany setting.py에서는 초기 장고 버전이 3.0.14로 확인되고 python 명령어로 확인한 결과 지금 버전은 4.0.5로 확인됩니다.

 

그런데 "그 이후에 장고 버전을 3.1 이상으로 올리셨으니" 이 부분에서 질문이 있습니다. 강의 중에 장고 버전을 올리는 업데이트를 진행한 적이 있나요?(있었다면 제 집중력이 부족했던 탓이니 너그러이 봐주세요...) 프로젝트 초반에 3.x 버전으로 인스톨한 것과 당시 3.0.14 버전이 깔린 것은 기억하는데,  이후 개인적으로 업데이트를 진행한 적은 없는데도 버전은 업데이트 되어 있네요.

 

만약 장고 자체적으로 "주기적으로 최신 버전으로 업데이트 해라."라는 명령?이 있다면 이해될 것 같긴한데... 

채널톡 아이콘