Belajar Django: Database dan Admin
Pada tulisan sebelumnya, saya hanya menjalankan django tanpa melakukan apapun, namun di akhir muncul peringatan saat menjalankan perintah “runserver” seperti berikut:
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them.
Tidak perlu heran, itu hanya peringatan agar kita melakukan proses migrasi database.
Secara default django sudah menyediakan versi sqlite, bisa dilihat di “restdjango/settings.py”
ATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
Saat menjalankan pertama kali juga db.sqlite3 akan terbentuk di root aplikasi
├── db.sqlite3 ├── manage.py └── restdjango ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-37.pyc │ ├── settings.cpython-37.pyc │ ├── urls.cpython-37.pyc │ └── wsgi.cpython-37.pyc ├── settings.py ├── urls.py └── wsgi.py
Note: abaikan saja __pycache__
Note2: semua perintah cli saya lakukan di root folder project.
Ubah ke Mysql
Karena saya lebih memilih menggunakan mysql, saya akan ubah konfigurasinya sedikit, pertama saya memasang paket “mysqlclient” terlebih dahulu
pip install mysqlclient
Selanjutnya, ubah konfigurasi database tadi menjadi:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'rest', 'USER': 'root', 'PASSWORD': 'root', 'HOST': '127.0.0.1', 'PORT': '3306', } }
Tentu saja sesuaikan dengan informasi database masing-masing.
Pastikan sudah tersedia databasenya, saya memberi nama databasenya yaitu “rest” karena niat awal saya ingin membuat aplikasi REST dengan django
Sesuai perintah yang diberitahui tadi di pesan error, untuk melakukan migrasi cukup gunakan perintah berikut:
python manange.py migrate
Hasilnya:
Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying sessions.0001_initial... OK
Kalau kita lihat di database maka tabel akan terbentuk
Menambahkan Super User
Salah satu fitur dasar django adalah tersedianya admin page lengkap dengan fitur CRUD-nya, menurut saya ini adalah fitur yang cukup menyenangkan, karena kita tidak perlu membuat fitur CRUD yang repetitif semua sudah dihandle dengan baik oleh django. Tapi kita butuh user untuk masuk ke dalam admin, untuk membuat superuser kita bisa gunakan perintah berikut:
python manage.py createsuperuser
Di terminal nanti akan ada pertanyaan-pertanyaan untuk membuat user, seperti berikut:
Username (leave blank to use 'ariesm'): Email address: contact@arsmp.com Password: Password (again): This password is too common. Bypass password validation and create user anyway? [y/N]: Y Superuser created successfully.
Setelah selesai, mari kunjungi halaman admin melalui alamat “localhost:8000/admin”
Silahkan login dengan superuser yang tadi dibuat
Gambar di atas halaman User, dan seperti yang saya bilang tadi django sudah menyiapkan fungsi CRUD
Tulisan kedua cukup sampai di sini, sampai jumpa di tulisan selanjutnya
referensi:
https://docs.djangoproject.com/en/2.2/intro/tutorial02/