Cara CRUD Django dengan MySQL

 

Django adalah salah satu framework web berbasis Python yang sangat populer karena kemudahan penggunaannya dan fitur-fitur canggih yang dimilikinya. Salah satu fitur utama dalam aplikasi web adalah kemampuan untuk melakukan operasi CRUD (Create, Read, Update, Delete) terhadap data yang disimpan dalam database. Django secara default menggunakan SQLite sebagai database, namun sangat mudah untuk mengonfigurasi Django agar menggunakan database lain seperti MySQL. Dalam artikel ini, kita akan mempelajari cara mengonfigurasi Django untuk menggunakan MySQL dan bagaimana melakukan operasi CRUD menggunakan MySQL.

1. Persiapan Lingkungan Pengembangan

Sebelum mulai, pastikan Anda sudah menyiapkan lingkungan pengembangan dengan beberapa alat berikut:

  • Python (versi 3.6 atau lebih baru)
  • MySQL sebagai sistem manajemen basis data
  • Django versi 3.x atau lebih baru
  • MySQLclient (library Python untuk koneksi ke MySQL)

1.1. Menginstal MySQL dan MySQLclient

Jika Anda belum menginstal MySQL di sistem Anda, Anda bisa mengunduh dan menginstalnya dari situs resmi MySQL. Setelah itu, Anda perlu menginstal library Python yang memungkinkan Django untuk berkomunikasi dengan MySQL, yaitu mysqlclient.

Untuk menginstal mysqlclient, jalankan perintah berikut di terminal:

pip install mysqlclient

Jika Anda menggunakan Windows dan mengalami kesulitan dalam menginstal mysqlclient, Anda bisa mencoba menggunakan PyMySQL, yang lebih mudah diinstal di Windows. Untuk menggunakan PyMySQL, jalankan:

pip install pymysql

Dan di dalam file __init__.py di folder proyek Django Anda, tambahkan kode berikut untuk mengonfigurasi Django menggunakan PyMySQL:

import pymysql
pymysql.install_as_MySQLdb()

2. Mengonfigurasi Django untuk Menggunakan MySQL

Setelah Anda menginstal MySQL dan mysqlclient, langkah berikutnya adalah mengonfigurasi Django agar menggunakan MySQL sebagai database.

2.1. Membuat Database MySQL

Langkah pertama adalah membuat database di MySQL yang akan digunakan oleh Django. Anda dapat menggunakan alat manajemen seperti phpMyAdmin, MySQL Workbench, atau terminal MySQL untuk membuat database baru.

  1. Masuk ke MySQL:

    mysql -u root -p
    
  2. Buat database baru untuk proyek Django:

    CREATE DATABASE mydb;
    
  3. Buat pengguna dan beri hak akses untuk database tersebut:

    CREATE USER 'django_user'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON mydb.* TO 'django_user'@'localhost';
    FLUSH PRIVILEGES;
    

2.2. Mengonfigurasi Database Django

Selanjutnya, Anda perlu mengonfigurasi Django untuk menggunakan MySQL. Buka file settings.py yang ada di dalam folder proyek Django Anda. Cari bagian yang mengonfigurasi DATABASES dan ubah pengaturannya menjadi seperti berikut:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydb',  # Nama database yang telah Anda buat
        'USER': 'django_user',  # Nama pengguna MySQL
        'PASSWORD': 'password',  # Password untuk pengguna MySQL
        'HOST': 'localhost',
        'PORT': '3306',  # Port default MySQL
    }
}

Jika Anda menggunakan PyMySQL sebagai pengganti mysqlclient, pastikan Anda telah menambahkan kode di atas seperti yang sudah dijelaskan sebelumnya.

3. Membuat Model untuk Operasi CRUD

Setelah mengonfigurasi database, kita akan membuat model yang mewakili data yang ingin kita simpan di dalam database. Dalam contoh ini, kita akan membuat model User yang menyimpan informasi pengguna, seperti nama, email, dan nomor telepon.

3.1. Membuat Model User

Buka file models.py di aplikasi Django Anda dan buat model User:

from django.db import models

class User(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField(unique=True)
    phone = models.CharField(max_length=15)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

Model di atas memiliki beberapa kolom:

  • name: Nama pengguna.
  • email: Alamat email pengguna, yang harus unik.
  • phone: Nomor telepon pengguna.
  • created_at: Waktu pembuatan data, yang otomatis diisi dengan waktu saat data dibuat.

4. Melakukan Migrasi Database

Setelah membuat model, langkah selanjutnya adalah menjalankan migrasi untuk membuat tabel di database sesuai dengan model yang telah Anda buat.

Jalankan perintah berikut di terminal untuk membuat migrasi:

python manage.py makemigrations

Setelah itu, jalankan migrasi untuk menerapkan perubahan ke database:

python manage.py migrate

Perintah ini akan membuat tabel user di database MySQL yang telah Anda konfigurasi sebelumnya.

5. Membuat View untuk Operasi CRUD

Selanjutnya, kita akan membuat tampilan (view) untuk menangani permintaan CRUD dari pengguna. Django menggunakan views untuk menangani logika aplikasi dan templates untuk menampilkan data.

5.1. Membuat View untuk CRUD

Buka file views.py di dalam aplikasi Django Anda dan buat fungsi untuk operasi CRUD.

from django.shortcuts import render, redirect, get_object_or_404
from .models import User
from .forms import UserForm

# Create
def create_user(request):
    if request.method == 'POST':
        form = UserForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('user_list')
    else:
        form = UserForm()
    return render(request, 'user/create.html', {'form': form})

# Read
def user_list(request):
    users = User.objects.all()
    return render(request, 'user/user_list.html', {'users': users})

# Update
def update_user(request, user_id):
    user = get_object_or_404(User, id=user_id)
    if request.method == 'POST':
        form = UserForm(request.POST, instance=user)
        if form.is_valid():
            form.save()
            return redirect('user_list')
    else:
        form = UserForm(instance=user)
    return render(request, 'user/update.html', {'form': form})

# Delete
def delete_user(request, user_id):
    user = get_object_or_404(User, id=user_id)
    if request.method == 'POST':
        user.delete()
        return redirect('user_list')
    return render(request, 'user/delete.html', {'user': user})

Fungsi-fungsi di atas adalah:

  • create_user: Menangani pembuatan pengguna baru.
  • user_list: Menampilkan daftar semua pengguna.
  • update_user: Mengedit data pengguna berdasarkan ID.
  • delete_user: Menghapus pengguna berdasarkan ID.

6. Membuat Form untuk Menangani Input Data

Django menyediakan forms untuk memudahkan proses pengambilan dan validasi data dari pengguna. Untuk membuat form input data pengguna, buat file forms.py di dalam aplikasi Anda.

6.1. Membuat Form UserForm

from django import forms
from .models import User

class UserForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ['name', 'email', 'phone']

Form ini akan digunakan untuk menangani input data pengguna saat membuat atau mengedit pengguna.

7. Membuat Template untuk Tampilan

Sekarang kita akan membuat template untuk menampilkan dan mengelola data pengguna. Template-templat ini akan diletakkan di dalam folder templates/user/.

7.1. Template user_list.html (Menampilkan Daftar Pengguna)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Daftar Pengguna</title>
</head>
<body>
    

Daftar Pengguna

Tambah Pengguna Baru
    {% for user in users %}
  • {{ user.name }} - {{ user.email }} - {{ user.phone }} Edit Hapus
  • {% endfor %}
</body> </html>

7.2. Template create.html (Form Tambah Pengguna)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Tambah Pengguna</title>
</head>
<body>
    

Tambah Pengguna Baru

<form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Tambah</button> </form> </body> </html>

7

.3. Template update.html (Form Edit Pengguna)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Edit Pengguna</title>
</head>
<body>
    

Edit Pengguna

<form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">Perbarui</button> </form> </body> </html>

7.4. Template delete.html (Konfirmasi Hapus Pengguna)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hapus Pengguna</title>
</head>
<body>
    

Apakah Anda yakin ingin menghapus pengguna {{ user.name }}?

<form method="post"> {% csrf_token %} <button type="submit">Ya, Hapus</button> </form> </body> </html>

8. Menambahkan URL ke dalam urls.py

Terakhir, kita perlu menambahkan URL yang mengarah ke view CRUD yang telah kita buat. Buka file urls.py dan tambahkan URL berikut:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.user_list, name='user_list'),
    path('create/', views.create_user, name='create_user'),
    path('update//', views.update_user, name='update_user'),
    path('delete//', views.delete_user, name='delete_user'),
]

9. Kesimpulan

Dengan mengikuti langkah-langkah di atas, Anda telah berhasil membuat aplikasi CRUD dengan Django menggunakan MySQL. Anda dapat menambahkan, mengedit, menghapus, dan menampilkan data pengguna menggunakan MySQL sebagai database. Django mempermudah pengelolaan data dengan menyediakan model, form, dan view yang sangat mudah digunakan. Anda juga bisa mengembangkan aplikasi ini lebih lanjut dengan menambahkan fitur seperti validasi data, pagination, dan autentikasi pengguna.

 

 

Dadang Heksa

Itaque quidem optio quia voluptatibus dolorem dolor. Modi eum sed possimus accusantium. Quas repellat voluptatem officia numquam sint aspernatur voluptas. Esse et accusantium ut unde voluptas.

8 Comments

Georgia Reader Reply

Et rerum totam nisi. Molestiae vel quam dolorum vel voluptatem et et. Est ad aut sapiente quis molestiae est qui cum soluta. Vero aut rerum vel. Rerum quos laboriosam placeat ex qui. Sint qui facilis et.

Aron Alvarado Reply

Ipsam tempora sequi voluptatem quis sapiente non. Autem itaque eveniet saepe. Officiis illo ut beatae.

Lynda Small Reply

Enim ipsa eum fugiat fuga repellat. Commodi quo quo dicta. Est ullam aspernatur ut vitae quia mollitia id non. Qui ad quas nostrum rerum sed necessitatibus aut est. Eum officiis sed repellat maxime vero nisi natus. Amet nesciunt nesciunt qui illum omnis est et dolor recusandae. Recusandae sit ad aut impedit et. Ipsa labore dolor impedit et natus in porro aut. Magnam qui cum. Illo similique occaecati nihil modi eligendi. Pariatur distinctio labore omnis incidunt et illum. Expedita et dignissimos distinctio laborum minima fugiat. Libero corporis qui. Nam illo odio beatae enim ducimus. Harum reiciendis error dolorum non autem quisquam vero rerum neque.

Sianna Ramsay Reply

Et dignissimos impedit nulla et quo distinctio ex nemo. Omnis quia dolores cupiditate et. Ut unde qui eligendi sapiente omnis ullam. Placeat porro est commodi est officiis voluptas repellat quisquam possimus. Perferendis id consectetur necessitatibus.

Nolan Davidson Reply

Distinctio nesciunt rerum reprehenderit sed. Iste omnis eius repellendus quia nihil ut accusantium tempore. Nesciunt expedita id dolor exercitationem aspernatur aut quam ut. Voluptatem est accusamus iste at. Non aut et et esse qui sit modi neque. Exercitationem et eos aspernatur. Ea est consequuntur officia beatae ea aut eos soluta. Non qui dolorum voluptatibus et optio veniam. Quam officia sit nostrum dolorem.

Kay Duggan Reply

Dolorem atque aut. Omnis doloremque blanditiis quia eum porro quis ut velit tempore. Cumque sed quia ut maxime. Est ad aut cum. Ut exercitationem non in fugiat.

Leave a Reply

Your email address will not be published. Required fields are marked *