Cara CRUD Django dengan PostgreSQL

 

Django adalah framework web berbasis Python yang sangat populer karena kemudahan penggunaannya dan banyaknya fitur canggih yang tersedia. Salah satu hal penting dalam pengembangan aplikasi web adalah melakukan operasi CRUD (Create, Read, Update, Delete) pada data yang disimpan dalam database. Django secara default menggunakan SQLite sebagai database, namun Anda bisa mengonfigurasi Django untuk menggunakan sistem manajemen basis data lainnya, seperti PostgreSQL, yang lebih kuat dan cocok untuk aplikasi skala besar.

Pada artikel ini, kita akan membahas cara mengonfigurasi Django untuk menggunakan PostgreSQL dan bagaimana melakukan operasi CRUD menggunakan PostgreSQL.

1. Persiapan Lingkungan Pengembangan

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

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

1.1. Menginstal PostgreSQL dan psycopg2

Jika Anda belum menginstal PostgreSQL, Anda bisa mengunduh dan menginstalnya dari situs resmi PostgreSQL. Setelah PostgreSQL terinstal, Anda perlu menginstal library Python yang memungkinkan Django berkomunikasi dengan PostgreSQL, yaitu psycopg2.

Untuk menginstal psycopg2, jalankan perintah berikut di terminal:

pip install psycopg2

Jika Anda menggunakan sistem operasi Windows dan menghadapi kesulitan dalam instalasi, Anda bisa menggunakan psycopg2-binary, yang merupakan versi precompiled dari psycopg2:

pip install psycopg2-binary

2. Mengonfigurasi Django untuk Menggunakan PostgreSQL

Setelah Anda menginstal PostgreSQL dan psycopg2, langkah berikutnya adalah mengonfigurasi Django untuk menggunakan PostgreSQL sebagai database.

2.1. Membuat Database PostgreSQL

Langkah pertama adalah membuat database di PostgreSQL yang akan digunakan oleh Django. Anda bisa melakukannya menggunakan antarmuka manajemen seperti pgAdmin atau terminal PostgreSQL.

  1. Masuk ke PostgreSQL:

    sudo -u postgres psql
    
  2. Buat database baru untuk proyek Django Anda:

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

    CREATE USER django_user WITH PASSWORD 'password123';
    GRANT ALL PRIVILEGES ON DATABASE mydb TO django_user;
    \q
    

2.2. Mengonfigurasi Database Django

Setelah Anda membuat database PostgreSQL, sekarang kita akan mengonfigurasi Django untuk terhubung ke PostgreSQL. Buka file settings.py yang ada di dalam folder proyek Django Anda. Temukan bagian DATABASES dan ubah pengaturannya menjadi seperti berikut:

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

Dengan pengaturan ini, Django akan menggunakan psycopg2 untuk menghubungkan aplikasi dengan PostgreSQL.

3. Membuat Model untuk Operasi CRUD

Setelah mengonfigurasi database, langkah berikutnya adalah membuat model yang mewakili data yang ingin Anda 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 seperti berikut:

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 ini memiliki beberapa kolom:

  • name: Nama pengguna
  • email: Alamat email pengguna yang 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.

4.1. Membuat Migrasi

Jalankan perintah berikut untuk membuat file migrasi yang menggambarkan perubahan yang telah Anda buat pada model:

python manage.py makemigrations

4.2. Menjalankan Migrasi

Setelah migrasi dibuat, jalankan perintah berikut untuk menerapkannya ke database:

python manage.py migrate

Perintah ini akan membuat tabel User di dalam database PostgreSQL sesuai dengan model yang telah Anda buat.

5. Membuat View untuk Operasi CRUD

Sekarang, 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 PostgreSQL. Anda dapat menambahkan, mengedit, menghapus, dan menampilkan data pengguna menggunakan PostgreSQL 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 *