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: [email protected]
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/

Show Comments