django 프로젝트를 생성할 때, 처음에 프로젝트 경로가 뭔가 이상한 게 걸렸습니다. 깔끔하게 정리하기 위해서, startproject 명령어를 찾다 보니, 이 문서를 찾게 되었습니다. 간단하게 해당 문서를 보면서 이해해 보도록 하겠습니다.

 


 먼저 명령어가 생각보다 꽤 길기 때문에, ps1 파일로 자동화를 시켜 보겠습니다. 반복되는 작업은 귀찮거든요. django_ex 폴더에다가 auto.ps1을 저장하겠습니다.

 

 

 이 스크립트를 보면, 가상 환경을 생성하고, 활성화를 시킵니다. 다음에 가상환경에서 django를 깔고, test 디렉토리를 만듭니다. 다음에, test로 이동한 다음에, django-admin startproject 명령어를 실행시킨 다음에 가상 환경을 deactivate 합니다.

 

 

 Auto 스크립트를 실행시켜 보면, 가상 환경을 세팅하고, 뭔가 설치함을 알 수 있어요. 이 작업이 끝나면, django_ex 밑에 있는 test 폴더로 이동하는데요.

 

 

 이것을 보시면, test 밑에 testproject가 생성되었음을 볼 수 있어요.

 

 testproject로 들어가 보시면 manage.py가 있습니다. 그리고 또 testproject 폴더가 있는데요. 이 안으로 들어가 봅시다.

 

 

 그러면, 이 안에 asgi.py, settings.py, urls.py 등등이 있음을 볼 수 있어요. 폴더 구조가 뭔가 이상하게 되어 있는데요. 절대 기분탓이 아닐 겁니다. 문서에 따르면, 디폴트로, manage.py와 project package가 포함된 새로운 디렉터리가 생성된다고 되어 있습니다. 그리고, 3번째 인자인 name만 주어지면, project package와 project directory가 name으로 설정됩니다. 저는 testproject를 name으로 설정하였습니다.

 

 이를 그림으로 그려 보면, 아래와 같습니다.

 

 manage.py랑 package가 포함된 디렉토리가 새로 생성되었어요. 다음에 package 또한, testproject라는 이름으로 들어가므로, 최종적인 구조는 아래와 같습니다.

 

 

 정확하게 문서대로 되었음을 알 수 있어요.

 


 startproject 명령어에는 4번째 인자가 있는데요. directory입니다. 이것이 인자로 주어지면, directory를 프로젝트 디렉토리로 하게 됩니다. 이 안에 manage.py가 들어갑니다. 그리고 3번째 인자로 주어진 name으로 pack 하게 됩니다.

 

 

 6번째 줄을 보면, 3번째 인자로 conf를, 4번째 인자로 .을 주었음을 알 수 있는데요. 여기서 .은 auto.ps1이 있는 위치에서 test 폴더를 의미합니다. 프로젝트 경로를 .으로 했고, .은 이미 있는 경로이기 때문에, 해당 경로 밑에 manage.py랑 conf로 패키징된 것이 생성되게 됩니다.

 

 

 이렇게 그림이 그려지겠네요. 이제 django_ex 밑에 있는 test와 venv를 모두 지우고, 다시 Auto.ps1을 실행시켜 봅시다.

 

 

 그러면, 다시 가상 환경에 django가 깔립니다.

 

 

 test 밑으로 들어가 보시면, conf와 manage.py가 있는데요. conf는 3번째 인자로 넘겨준 패키징 이름을 의미합니다.

 

 

 conf 밑으로 들어가면 asgi.py, wsgi.py 등 초기화에 필요한 py 파일들이 있음을 볼 수 있습니다.