django를 통해 WAS서버를 구축하는데 기능마다 app을 다르게 만들어 관리하고 싶다면 기존 루트에 계속 app을 만들면 폴더가 많아져서 관리하기가 귀찮아질 수 있다. 그래서 서브폴더를 만들고 그 안에 app폴더를 넣어서 제작하는 법을 정리하였다.
mkdir <서브 폴더명>/<앱 이름>
python manage.py startapp <앱 이름> <서브 폴더명>/<앱 이름>
app을 생성하면 apps.py라는 파일이 있다 내용을 아래처럼 수정한다.
class AppConfig(AppConfig):
# optional, add default auto field
default_auto_field = 'django.db.models.BigAutoField'
# set location of app using sub dir
name = '<서브 폴더명>.<앱 이름>'
django에서 app을 추가하면 settings.py에서 INSTALLED_APPS에 app을 추가한다는 사실은 알고 있을 것이다. 여기서 서브 폴더명을 추가하여 넣어주자.
INSTALLED_APPS = (
...
'<서브 폴더명>.<앱 이름>',
)
프로젝트 폴더안에 있는 urls.py에 urlpatterns에도 해당 app에 대한 url을 추가해야 한다. 이것도 앞에 서브 폴더명을 붙여서 추가하여 넣어주자.
urlpatterns = [
...
path('<url 주소>/', include('<서브 폴더명>.<앱 이름>.urls')),
...
]
마지막으로 migration 경로를 수정해 주면 끝.
makemigrations <앱 이름> --pythonpath='<서브 폴더명>'
# makemigrations myapp --pythonpath='apps'