programing

장고 앱을 완전히 제거하는 방법은 무엇입니까?

lovejava 2023. 7. 18. 21:23

장고 앱을 완전히 제거하는 방법은 무엇입니까?

데이터베이스 제거가 완료된 장고 앱을 완전히 제거하기 위한 절차는 무엇입니까?

  1. 장고 < 1.7은 앱에 대한 모든 테이블을 삭제하는 데 필요한 SQL을 제공하는 편리한 관리 명령을 가지고 있습니다.자세한 내용은 sqlclear 문서를 참조하십시오.기본적으로, 달리기../manage.py sqlclear my_app_nameDB에 있는 앱의 모든 추적을 제거하기 위해 실행해야 하는 SQL 문을 가져옵니다.이러한 문을 복사하여 SQL 클라이언트에 붙여넣어야 합니다. 1은 장고 1.7 이상을 사용합니다../manage.py migrate my_app_name zero(마이그레이션 문서 참조), 데이터베이스 정리를 자동으로 실행합니다.

  2. 에서 앱을 .INSTALLED_APPS당의프트의에서.settings.py장고는 더 이상 앱을 로드하지 않습니다.

  3. 앱의 파일을 더 이상 사용하지 않으려면 프로젝트 디렉터리 또는 해당 디렉터리가 있는 PYONPATH의 다른 위치에서 앱 디렉터리를 삭제합니다.

  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()

내 맥락에서 프로젝트는 여러 번 존재합니다.저는 개발 시스템을 가지고 있고, 일부 팀원들은 개발 시스템을 가지고 있으며, 고객을 위한 준비 시스템과 생산 시스템이 있습니다.이것은 sql 명령을 수동으로 실행하고 싶지 않다는 것을 의미합니다.저는 그것이 자동화되기를 원합니다.

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

1단계: 앱을 비우지만 설치된 상태로 유지

폴더 "마이그레이션"을 제외한 모든 파일을 앱에서 제거합니다.

다음 명령을 실행합니다.

python 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.py".settings.py "에 .

2단계: 변경 사항 배포

모든 프로젝트를 업데이트합니다.팀 동료들에게 프로젝트를 업데이트하고 마이그레이션을 실행하라고 말합니다.

3단계: 설정에서 "my_app_to_remove"를 제거합니다.파이의

이제 settings.py 에서 "my_app_to_remove"를 제거하고 다시 배포합니다.

  1. 에한대논에 대해 settings.pyINSTALLED_APPS의 line ▁unnecess.
  2. 폴더를 합니다.__pycache__그리고.migrate당신의 프로젝트에서
  3. 불요한모삭에서 합니다.models.py
  4. 모든 가져오기 링크 삭제views.py,admin.py끝 등
  5. 의모링크삭에 있는 모든 합니다.urls.py의 불필요한 앱의 에.
  6. 데이터베이스에서 앱과 관련된 불필요한 테이블을 삭제합니다(도움말 프로그램 "Valentina Studio"로 합니다)
  7. 앱의 폴더 삭제
  8. 명령줄에서 다음을 수행합니다.python manage.py migrate그리고.python manage.py syncdb

django app은 *.py 파일의 "세트"이며 django-app-name이 있는 디렉토리입니다.따라서 모든 *.py 파일이 있는 전체 폴더를 삭제하기만 하면 됩니다.

을 " DB를 .DELETE FROM <app-name_table-names>

또한 루트 디렉토리의 setting.py 에서 app-name이 있는 행을 삭제해야 합니다.

첫 번째 단계로 앱 모델을 사용하지 않도록 하고 배포합니다.이는 롤링 배포에 필수적입니다.아래의 참고 사항을 확인하십시오.

그러면 두 가지 옵션이 있습니다.

옵션 1

  1. (실행) 설정python manage.py migrate <app_name> zero이렇게 하면 앱에 대한 모든 마이그레이션이 되돌리고 다음을 정리합니다.django_migrations
  2. 코드, 코(앱),INSTALLED_APPS,urls.py아래)
  3. 배포)python manage.py migrate)

옵션 2

  1. 앱에서 모든 모델 제거
  2. 배포
  3. 앱(코),INSTALLED_APPS,urls.py아래)
  4. 배포
  5. (수동) 청소django_migrations

이 대답은 자동 롤링 배포 환경(예: Heroku)에서 생각하는 것입니다.수동이란 자동 배포에서는 일반적으로 수행할 수 없음을 의미합니다.배포는 기본적으로 다음과 같습니다.python manage.py migrate일반적으로 자동 배포에서 수행됩니다.

메모들

  1. 다른 앱에서 이 앱을 가져오는 코드를 제거해야 합니다. 또에 있모든참조에 있는 모든 참고 .settings.py(그러나 그것을 간직하세요.INSTALLED_APPS마이그레이션을 실행할 수 있습니다.urls.py 타기.
  2. migrate <app_name> zero에서는 해당 마이그레이션에 따라 모든 마이그레이션을 되돌립니다.따라서 다른 앱의 마이그레이션이 이러한 마이그레이션에 의존하는지 주의해야 합니다.
  3. 스키마 마이그레이션뿐만 아니라 데이터 마이그레이션도 있는 경우 계단식 삭제에 주의하십시오.
  4. 다른 앱에 정의된 신호를 수신하는 신호 수신기는 롤링 배포에서 문제가 될 수 있습니다.

레퍼런스

  1. https://docs.djangoproject.com/en/stable/ref/django-admin/ #http://migrate

조던 헤인즈의 장고 앱을 안전하게 제거합니다.

Django 앱(모델 포함)을 완전히 제거하려면 아래 단계를 따르십시오.앱을 제거한다고 가정해 보겠습니다.note_app:

  1. 다른 앱에서 note_app 가져오기를 검색합니다.가장 쉬운 방법은 "from note_app"을 프로젝트 전체에서 검색하는 것입니다.note_app 디렉토리를 검색에서 제외할 수도 있습니다.
  2. 의 모든 모델에 주석 달기note_app.models다음에서 항목을 제거해야 할 수도 있습니다.note_app.admindjango admin에 note_app 모델을 등록한 경우 파일.
  3. Django 앱을 실행하려고 할 때 오류를 찾고 해결하십시오. P.S. 1단계에서 일부 모델 가져오기를 놓쳤을 수 있습니다.
  4. ForeignKey, OneToOneManyToMany 필드를 정의하는 방법에 따라 1단계에서 note_app 모델의 일부 키를 놓쳤을 수 있습니다.계속하기 전에 다른 앱의 모델에서 note_app 모델을 가리키는 필드를 삭제해야 합니다.이러한 필드가 누락되지 않았는지 잠시 확인한 후, 누락된 필드가 있으면 남아 있는 필드를 삭제하고 데이터베이스에서 필드를 제거하는 마이그레이션을 작성합니다.
  5. 달려.makemigrations그러면 note_app 마이그레이션이 생성되어 방금 추천한 모든 모델이 삭제됩니다.이 마이그레이션을 수행하면 note_app 모델을 참조하는 필드도 다른 앱의 모델에서 제거해야 합니다.
  6. 마이그레이션을 실행합니다.앱 디렉터리를 삭제하기 전에 운영 환경을 포함한 모든 환경에서 마이그레이션을 실행해야 합니다.데이터베이스에서 앱의 모델을 제거하는 마이그레이션은 note_app 디렉토리에서 예상치 못하게 수행됩니다.앱 디렉터리를 너무 일찍 삭제하면 데이터베이스를 정리하기 전에 이러한 마이그레이션을 삭제할 수 있습니다.
  7. 삭제된 모델의 콘텐츠 유형이 오래되었다는 알림이 표시될 수 있습니다.이러한 내용 유형을 삭제할지 여부를 묻는 메시지가 나타나면 "예"라고 대답합니다.
  8. Git팁: 마이그레이션을 커밋하고 커밋을 메모한 다음 note_app 디렉터리를 삭제하는 별도의 커밋을 만듭니다.스테이징 또는 프로덕션 환경에서 변경 사항을 적용할 준비가 되면, 작성한 커밋을 체크아웃하고 마이그레이션을 실행한 다음 최신 커밋을 체크아웃하여 앱 디렉터리를 삭제합니다.첫 번째 커밋은 여전히 installed_APPs에 note_app가 있어야 합니다.
  9. note_app이 들어 있는 디렉터리를 삭제합니다.
  10. 제다한을 합니다.note_app의 신의에서.INSTALLED_APPS설정

그리고 그것은 정말로 그것에 관한 것입니다… 매우 쉽습니다:)

아래의 3단계는 장고 프로젝트에서 앱을 완전히 제거할 수 있습니다.

  1. 아래와 같이 앱을 지정하여 0으로 마이그레이션합니다.*아래 명령은 데이터베이스에서 앱의 모든 테이블을 삭제합니다.
python manage.py migrate <app_name> zero
  • <app_label> <migrationname>: ... 앱 이름을 가져옵니다.0이라는 이름을 사용하여 애플리케이션에 적용된 모든 마이그레이션을 되돌립니다.

수 없으므로 주의하시기 바랍니다.zero아래와 같이 지정하면 오류가 발생합니다.

python manage.py migrate <app_name> <app_name> zero
  1. 에서 앱을 합니다.INSTALLED_APPSsettings.py아래와 같이:
# "settings.py"

INSTALLED_APPS = [
    # "my_app",
]
  1. 장고 프로젝트에서 앱 폴더를 삭제합니다.

언급URL : https://stackoverflow.com/questions/3329773/how-to-completely-uninstall-a-django-app