장고에서 앱이 두 개 이상 있을 때 models.py를 앱별로 해당 앱의 하위 폴더에 분리하려고 하는데 어떻게 해야 할까요?
-
pybo앱이 이미 있고, 장고 기본문서에 예제로 나와있는 polls 앱을 추가해서 만들고 있습니다.
-
현재 models.py 경로 (mysite>pybo>models.py)는 pybo 앱 하위에만 존재하고 있습니다. models.py 내용을 앱별로 구분하고 싶어서 polls앱의 models.py는 별도로 분리해서 만들고 싶습니다.
-
지금은 polls앱을 추가해서 models.py (mysite >polls>models.py)를 만든 다음 "python manage.py makemigrations polls" 를 실행하면 "No installed app with label 'polls'. 라고 뜨네요. (신기한 것은 "python manage.py makemigrations pybo"라고 해도 "No installed app with label 'pybo'. " 라고 뜹니다.)
polls앱의 models.py 코드는 다음과 같습니다. (장고 문서에 있는 그대로입니다. 다만 클래스명 Question은 pybo 모델이랑 중복이라서 이름을 변경했습니다.)
from django.db import models
class Questionnaire(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField("date published")
class Choice(models.Model):
question = models.ForeignKey(Questionnaire, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
- mysite > config > setting > base.py 에서 다음과 같이 polls 앱을 추가했습니다.
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'common.apps.CommonConfig',
'pybo.apps.PyboConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
-
저는 점프투장고에서 설명하신 것처럼 templates 하위 폴더에 앱별로 템플릿을 구분하는 방식과 동일하게 models.py를 분리해서 관리하고 싶은데 어떻게 해야 할까요?
-
예를 들어서 파이보는 mysite>models>pybo>models.py 로 관리하고
-
polls는 mysite>models>polls>models.py 로 관리하는 것입니다. (이렇게 하면 앱별로 models.py를 관리할 수 있어서 덜 헷갈릴거 같습니다)
-
아니면 기존 pybo앱에서 하위 폴더를 만들고 다수의 models.py를 만드는 방법도 있을 수 있을거 같은데 어떤 방법이 좋은지도 모르겠습니다. (models.py를 여러개로 분리하는게 좋은 방법인지도 확신은 없습니다.)
-
요약 : models.py를 앱별로 분리하고 싶은데 어떻게 해야 할지 몰라서 스승님께 질문드립니다.
-
참고 (구글링을 해보니 앱이 한 개인 경우 다수의 models.py를 추가하는 방식은 찾았습니다. 참고링크
-
참고로 터미널에서 django-admin check 명령어를 실행하면 "django.core.exceptions.ImproperlyConfigured: Requested setting LANGUAGES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings." 라는 오류메시지가 뜨는데 이 오류 의미를 잘 모르겠습니다.
hello_world 님 692
M 2023년 6월 29일 2:35 오전
1개의 답변이 있습니다. 1 / 1 Page
스승님. 방법을 찾았습니다. setting.py를 로컬과 서버로 분리한 후에 makemigrations를 하기 위해서는 터미널에서 다음과 같이 실행을 해야 하네요. 실행 결과를 같이 올립니다.
(mysite) PS C:\pybo_projects\mysite> python manage.py makemigrations polls --settings=config.settings.local
Migrations for 'polls':
polls\migrations\0001_initial.py
- Create model Questionnaire
- Create model Choice
스승님께서 링크해주신 점프 투 장고 "settings.py 분리" 편을 보고 뒤에 옵션을 붙여서 실행해봤네요. 스승님께서 문제 원인을 확인해주셔서 해결할 수 있습니다. 감사합니다.
- 참고 : 확신은 없지만 교재에 나와있는 mysite.cmd 파일로 DJANGO_SETTINGS_MODULE 환경변수 설정 시 파이참 터미널에서는 적용이 안되서 그런걸로 추측합니다. 윈도 cmd에서는 적용이 되는거 같습니다.
M 2023년 6월 29일 3:50 오후