hapus nama aplikasi itu dari settings.py aplikasi yang diinstal, lalu hapus tautan apa pun ke aplikasi itu dari file urls.py utama. Maka Anda dapat dengan aman menghapus aplikasi itu
Aseem
Jika Anda sedang dalam pengembangan menggunakan SQLite dan Anda tidak keberatan menyetel ulang database, apakah boleh menghapus folder aplikasi dan db.sqlite3, dan menghapusnya dari INSTALLED_APPSdalam settings.py?
Kevin
Jawaban:
150
Django <1.7 memiliki perintah manajemen yang berguna yang akan memberi Anda SQL yang diperlukan untuk melepaskan semua tabel untuk sebuah aplikasi. Lihat dokumen sqlclear untuk informasi lebih lanjut. Pada dasarnya, menjalankan ./manage.py sqlclear my_app_namemembuat Anda mendapatkan pernyataan SQL yang harus dijalankan untuk menyingkirkan semua jejak aplikasi di DB Anda. Anda masih perlu menyalin dan menempelkan (atau menyalurkan) pernyataan tersebut ke klien SQL Anda. Untuk Django 1.7 dan yang lebih baru, gunakan ./manage.py migrate my_app_name zero(lihat dokumen migrasi ), yang menjalankan pembersihan database secara otomatis.
Untuk menghapus aplikasi dari proyek Anda, yang perlu Anda lakukan adalah menghapusnya dari INSTALLED_APPSdalam proyek Anda settings.py. Django tidak akan lagi memuat aplikasi.
Jika Anda tidak ingin lagi file aplikasi berkeliaran, hapus direktori aplikasi dari direktori proyek Anda atau lokasi lain di PYTHONPATH tempat ia berada.
(opsional) Jika aplikasi menyimpan file media, file cache, atau file sementara lainnya di suatu tempat, Anda mungkin ingin menghapusnya juga. Berhati-hatilah juga dengan data sesi yang tersisa yang mungkin tersisa dari aplikasi.
(opsional) Saya juga akan menghapus semua jenis konten basi.
Seperti itu.
from django.contrib.contenttypes.models importContentTypefor c inContentType.objects.all():ifnot c.model_class():print"deleting %s"%c # print(f"deleting {c}") # for Python 3.6+
c.delete()
Jawaban yang sangat baik, hanya satu tambahan yang akan saya buat: pip uninstall nama paket adalah teman Anda, jauh lebih bagus daripada menjelajahi PYTHONPATH Anda.
DaveJ
25
Pada Django 1.7, jika Anda menggunakan migrasi, langkah 1 akan dilakukan ./manage.py migrate my_app_name zero. Dan secara otomatis akan mengeksekusi SQL juga.
Jika aplikasi yang dihapus memiliki migrasi, yang bergantung pada migrasi aplikasi lain, sistem migrasi akan rusak ketika ia melihat bahwa migrasi yang bergantung tersebut tidak ada lagi. Berhati-hatilah saat menggunakan jawaban di atas jika aplikasi yang akan dihapus adalah ketergantungan dalam riwayat migrasi salah satu aplikasi Anda.
Filip Kilibarda
1
Dan untuk kelengkapan, Anda biasanya perlu menghapus referensi ke include("appname.urls")dari proyekurls.py
nigel222
16
berkomentar settings.pydi INSTALLED_APPSbaris aplikasi yang tidak perlu
hapus semua folder __pycache__dan migrateproyek Anda
hapus model yang tidak perlu di models.py
hapus semua tautan imporviews.py , admin.pyakhiri , dll.
hapus semua tautan di urls.pyaplikasi Anda yang tidak perlu
dalam database, hapus tabel yang tidak perlu yang terkait dengan aplikasi (saya melakukannya dengan program bantuan "Valentina Studio")
hapus folder aplikasi
di baris perintah lakukan: python manage.py migratedanpython manage.py syncdb
Dengan asumsi Anda tidak berbagi database dengan aplikasi lain, Anda bisa meletakkan db bernama di settings.py.
joel3000
setiap aplikasi memiliki db sendiri - lumayan
V-Light
3
@ V-Light setiap aplikasi memiliki tabelnya sendiri dan setiap proyek memiliki database sendiri.
Alireza Savand
2
Saya sangat menyukai langkah-langkah dari artikel ini - ini termasuk dukungan migrasi .
Mungkin perlu diadaptasi dalam dua Pembaruan kode - tetapi terlihat sangat aman ketika Anda harus bekerja dengan banyak penerapan (seperti: tahap pengujian, versi BETA dan produksi - dalam kasus saya)
Dalam konteks saya, proyek ada beberapa kali: Saya memiliki sistem pengembangan, beberapa rekan tim memiliki sistem pengembangan, ada sistem pementasan untuk pelanggan dan sistem produksi. Ini berarti saya tidak ingin menjalankan perintah sql dengan tangan. Saya ingin ini otomatis.
Sasaran: Hapus aplikasi dan semua tabel database.
Langkah 1: Kosongkan aplikasi, tetapi biarkan terpasang
hapus semua file dari aplikasi, kecuali folder "migrasi"
db.sqlite3
, dan menghapusnya dariINSTALLED_APPS
dalamsettings.py
?Jawaban:
Django <1.7 memiliki perintah manajemen yang berguna yang akan memberi Anda SQL yang diperlukan untuk melepaskan semua tabel untuk sebuah aplikasi. Lihat dokumen sqlclear untuk informasi lebih lanjut. Pada dasarnya, menjalankan
./manage.py sqlclear my_app_name
membuat Anda mendapatkan pernyataan SQL yang harus dijalankan untuk menyingkirkan semua jejak aplikasi di DB Anda. Anda masih perlu menyalin dan menempelkan (atau menyalurkan) pernyataan tersebut ke klien SQL Anda. Untuk Django 1.7 dan yang lebih baru, gunakan./manage.py migrate my_app_name zero
(lihat dokumen migrasi ), yang menjalankan pembersihan database secara otomatis.Untuk menghapus aplikasi dari proyek Anda, yang perlu Anda lakukan adalah menghapusnya dari
INSTALLED_APPS
dalam proyek Andasettings.py
. Django tidak akan lagi memuat aplikasi.Jika Anda tidak ingin lagi file aplikasi berkeliaran, hapus direktori aplikasi dari direktori proyek Anda atau lokasi lain di PYTHONPATH tempat ia berada.
(opsional) Jika aplikasi menyimpan file media, file cache, atau file sementara lainnya di suatu tempat, Anda mungkin ingin menghapusnya juga. Berhati-hatilah juga dengan data sesi yang tersisa yang mungkin tersisa dari aplikasi.
(opsional) Saya juga akan menghapus semua jenis konten basi.
Seperti itu.
sumber
./manage.py migrate my_app_name zero
. Dan secara otomatis akan mengeksekusi SQL juga.sqlclear
telah dihapus di Django 1.9 jadi jawaban ini hanya bagus untuk versi sebelumnya. Lihat: docs.djangoproject.com/en/1.10/releases/1.9/…include("appname.urls")
dari proyekurls.py
settings.py
diINSTALLED_APPS
baris aplikasi yang tidak perlu__pycache__
danmigrate
proyek Andamodels.py
views.py
,admin.py
akhiri , dll.urls.py
aplikasi Anda yang tidak perlupython manage.py migrate
danpython manage.py syncdb
sumber
aplikasi django adalah "set" file * .py dan direktori dengan nama-aplikasi-django. Jadi Anda cukup menghapus seluruh folder dengan semua file * .py
Untuk "menghapus" tabel dari DB, Anda harus menggunakan
DELETE FROM <app-name_table-names>
Selanjutnya, Anda harus menghapus baris dengan nama aplikasi dari setting.py di direktori root
sumber
Saya sangat menyukai langkah-langkah dari artikel ini - ini termasuk dukungan migrasi .
Mungkin perlu diadaptasi dalam dua Pembaruan kode - tetapi terlihat sangat aman ketika Anda harus bekerja dengan banyak penerapan (seperti: tahap pengujian, versi BETA dan produksi - dalam kasus saya)
sumber
Dalam konteks saya, proyek ada beberapa kali: Saya memiliki sistem pengembangan, beberapa rekan tim memiliki sistem pengembangan, ada sistem pementasan untuk pelanggan dan sistem produksi. Ini berarti saya tidak ingin menjalankan perintah sql dengan tangan. Saya ingin ini otomatis.
Sasaran: Hapus aplikasi dan semua tabel database.
Langkah 1: Kosongkan aplikasi, tetapi biarkan terpasang
hapus semua file dari aplikasi, kecuali folder "migrasi"
Jalankan perintah ini:
manage.py makemigrations -n drop_all_tables my_app_to_remove
Direktori tersebut sekarang terlihat seperti ini:
Biarkan
my_app_to_remove
di file "settings.py".Langkah 2: Terapkan perubahan
Perbarui semua proyek. Beri tahu rekan satu tim untuk memperbarui proyek mereka dan menjalankan migrasi.
Langkah 3: hapus "my_app_to_remove" dari settings.py
Sekarang hapus "my_app_to_remove" dari settings.py dan terapkan lagi.
sumber