장고 앱 삭제하기

소요 시간: 5분

오늘은 내 Django 프로젝트에서 더 이상 필요하지 않은 앱을 삭제하는 작업을 진행했다. 앱을 안전하게 삭제하기 위해 두 가지 방법을 고려해보았다. 아래는 그 과정을 정리한 내용이다.


방법 1: 앱 삭제 기본 절차

1. Django 1.7 이상에서는 ./manage.py migrate my_app_name zero 명령어를 실행하여 데이터베이스를 자동으로 정리했다. 이 작업은 앱이 사용하는 모든 데이터베이스 테이블을 삭제하는 데 도움을 준다.

2. 프로젝트의 settings.py 파일에서 해당 앱을 INSTALLED_APPS 목록에서 제거했다. 이렇게 하면 Django가 더 이상 이 앱을 로드하지 않게 된다.

3. 앱의 디렉토리나 해당 앱이 위치한 PYTHONPATH의 다른 위치에서 앱 파일을 삭제했다. 이 단계는 필요 없는 파일들을 정리하는 데 필수적이다.

4. (선택 사항) 앱이 저장했던 미디어 파일이나 캐시 파일, 기타 임시 파일이 있다면 삭제했다. 세션 데이터도 남아 있을 수 있으므로 이를 확인하고 정리해야 한다.

5. (선택 사항) Django의 콘텐츠 유형 관리 모델을 사용하여 오래된 콘텐츠 유형을 삭제했다. 아래의 코드를 실행해 불필요한 콘텐츠 유형을 정리했다.

from django.contrib.contenttypes.models import ContentType
for c in ContentType.objects.all():
    if not c.model_class():
        print(f"deleting {c}")
        c.delete()


방법 2: 앱을 안전하게 삭제하는 절차

1. 프로젝트 내에서 해당 앱에 대한 모든 참조를 제거했다. 여기에는 임포트나 외래 키 등이 포함된다.

2. models.py 파일에서 해당 앱의 모든 모델을 제거했다.

3. makemigrations 명령어를 실행하여 제거된 모델에 대한 마이그레이션을 생성했다. 이 단계에서 모델에 연결된 데이터베이스 테이블이 삭제되도록 한다.

4. 다른 앱의 마이그레이션 파일에서도 해당 앱에 대한 참조를 정리해야 했다.

5. 마이그레이션을 적용하고, 테스트를 통해 프로젝트의 올바른 작동을 확인했다.

6. 업데이트된 Django 프로젝트를 배포했다.

7. 다시 한 번 해당 앱을 INSTALLED_APPS 목록에서 제거했다.

8. 마지막으로 앱의 디렉토리를 삭제하여 모든 파일을 정리했다.

여러 가지 과정을 통해 내 Django 프로젝트의 불필요한 앱을 깔끔하게 정리할 수 있었다. 이러한 절차를 통해 프로젝트의 구조가 더욱 명확해지고, 앞으로의 유지 보수가 수월해질 것 같아 기분이 좋다. 앱 삭제 작업이 다소 번거롭긴 했지만, 이렇게 정리한 덕분에 더 효율적으로 프로젝트를 진행할 수 있을 것 같아 기대된다.

장고 리스트