[django] Django : Django 앱을 완전히 제거하는 방법은 무엇입니까?

Django 앱을 완전히 제거하고 데이터베이스 제거를 완료하는 절차는 무엇입니까?



답변

  1. Django <1.7에는 앱의 모든 테이블을 삭제하는 데 필요한 SQL을 제공하는 편리한 관리 명령이 있습니다. 자세한 정보는 sqlclear 문서 를 참조하십시오. 기본적으로 실행 ./manage.py sqlclear my_app_name하면 DB에서 앱의 모든 흔적을 제거하기 위해 실행해야하는 SQL 문을 얻을 수 있습니다. 이러한 명령문을 SQL 클라이언트에 복사하여 붙여 넣어야합니다 (또는 파이프). Django 1.7 이상 에서는 데이터베이스 정리를 자동으로 실행하는 ( migration 문서 ./manage.py migrate my_app_name zero참조 )를 사용 하십시오 .

  2. 프로젝트에서 앱을 제거하려면 INSTALLED_APPS프로젝트의 settings.py. Django는 더 이상 앱을로드하지 않습니다.

  3. 앱의 파일이 더 이상 사용되지 않도록하려면 프로젝트 디렉터리 또는 PYTHONPATH의 다른 위치에서 앱 디렉터리를 삭제하십시오.

  4. (선택 사항) 앱이 미디어 파일, 캐시 파일 또는 기타 임시 파일을 어딘가에 저장 한 경우 해당 파일도 삭제할 수 있습니다. 또한 앱에서 남을 수있는 느린 세션 데이터에주의하십시오.

  5. (선택 사항) 오래된 콘텐츠 유형도 제거합니다.

그렇게.

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


답변

  1. 에 주석 settings.pyINSTALLED_APPS 불필요한 응용 프로그램의 라인
  2. 모든 폴더를 삭제 __pycache__하고migrate 프로젝트
  3. 불필요한 모델 삭제 models.py
  4. 의 모든 가져 오기 링크 삭제 views.py,admin.py end 등의 .
  5. 모든 링크 삭제 urls.py불필요한 앱의
  6. 데이터베이스에서 앱과 관련된 불필요한 테이블을 삭제합니다 (도움말 프로그램 “Valentina Studio”를 사용하여 수행합니다).
  7. 앱 폴더 삭제
  8. 명령 줄에서 그것을 수행 python manage.py migrate하고python manage.py syncdb

답변

django 앱은 * .py 파일의 “세트”이며 django-app-name이있는 디렉토리입니다. 따라서 모든 * .py 파일이있는 전체 폴더를 간단히 삭제할 수 있습니다.

DB에서 테이블을 “제거”하려면 다음을 사용해야합니다. DELETE FROM <app-name_table-names>

또한 루트 디렉터리의 setting.py에서 app-name과 같은 줄을 삭제해야합니다.


답변

이 기사의 단계를 정말 좋아합니다 . 여기에는 마이그레이션 지원 이 포함됩니다 .

두 번의 코드 업데이트로 조정해야 할 수도 있습니다.하지만 많은 배포 (예 : 테스트 단계, 베타 버전 및 프로덕션-제 경우)로 작업해야 할 때 정말 안전 해 보입니다.


답변

제 맥락에서 프로젝트는 여러 번 존재합니다. 저는 개발 시스템이 있고, 일부 팀원에게는 개발 시스템이 있으며, 고객을위한 스테이징 시스템과 프로덕션 시스템이 있습니다. 이것은 손으로 SQL 명령을 실행하고 싶지 않다는 것을 의미합니다. 자동화되기를 바랍니다.

목표 : 앱과 모든 데이터베이스 테이블을 제거합니다.

1 단계 : 앱을 비우고 설치된 상태로 둡니다.

“migrations”폴더를 제외한 모든 파일을 앱에서 제거합니다.

다음 명령을 실행하십시오. manage.py makemigrations -n drop_all_tables my_app_to_remove

이제 디렉토리는 다음과 같습니다.

my_app_to_remove/
my_app_to_remove/__init__.py
my_app_to_remove/migrations
my_app_to_remove/migrations/0001_initial.py
my_app_to_remove/migrations/....
my_app_to_remove/migrations/0030_drop_all_tables.py
my_app_to_remove/migrations/__init__.py

my_app_to_remove“settings.py”파일을 그대로 둡니다 .

2 단계 : 변경 사항 배포

모든 프로젝트를 업데이트하십시오. 팀 동료에게 프로젝트를 업데이트하고 마이그레이션을 실행하도록 지시하십시오.

3 단계 : settings.py에서 “my_app_to_remove”제거

이제 settings.py에서 “my_app_to_remove”를 제거하고 다시 배포하십시오.


답변