HeaderRight Teknologi Nalar

Senin, 05 Januari 2026

Tutorial CRUD Django dari Nol dengan RBAC (Admin, Petugas, Pimpinan

Tutorial CRUD Django dari Nol dengan RBAC (Admin, Petugas, Pimpinan)
Tutorial CRUD Django dengan Role-Based Access Control dan Upload File Arsip Digital
Ilustrasi tutorial CRUD Django dengan fitur Upload Arsip Digital dan Role-Based Access Control (Admin, Petugas, Pimpinan).

Tutorial CRUD Django dari Nol dengan Role-Based Access Control

Tutorial ini merupakan lanjutan langsung dari artikel Konsep CRUD dalam Pemrograman Web.

Tujuan utama tutorial ini adalah membantu mahasiswa dan pemula membangun aplikasi CRUD Django yang tidak hanya berfungsi, tetapi juga aman secara akses pengguna.

1. Gambaran Sistem

Aplikasi yang dibangun adalah sistem arsip digital sederhana dengan fitur:

  • CRUD data arsip
  • Login & autentikasi
  • Role-Based Access Control (RBAC)

2. Konsep RBAC dalam Django

RBAC membagi hak akses berdasarkan peran pengguna:

RoleHak Akses
AdminKelola user, semua data
PetugasTambah & ubah arsip
PimpinanLihat laporan & arsip

3. Mengaktifkan Autentikasi Django

Django sudah menyediakan sistem login bawaan. Pastikan di settings.py:

INSTALLED_APPS = [
  'django.contrib.auth',
  'django.contrib.contenttypes',
  ...
]

4. Membuat Group (Role)

Gunakan Django shell:

python manage.py shell
from django.contrib.auth.models import Group

Group.objects.create(name='Admin')
Group.objects.create(name='Petugas')
Group.objects.create(name='Pimpinan')

5. Mengatur Permission

Django otomatis membuat permission:

  • add_arsip
  • change_arsip
  • delete_arsip
  • view_arsip

Permission ini dapat dikaitkan ke Group melalui Django Admin.

6. Proteksi View dengan Permission

Contoh View Tambah Arsip (Petugas & Admin)

from django.contrib.auth.decorators import permission_required

@permission_required('arsip.add_arsip', raise_exception=True)
def tambah_arsip(request):
    ...

View Hapus Arsip (Admin saja)

>@permission_required('arsip.delete_arsip', raise_exception=True)
def hapus_arsip(request, id):
    ...

7. Pembatasan Tampilan Template

{% if perms.arsip.add_arsip %}
Tambah Arsip
{% endif %}

8. Studi Kasus Mini

Dalam simulasi sistem arsip sekolah:

  • Admin → Kepala TU
  • Petugas → Staf Arsip
  • Pimpinan → Kepala Sekolah

Model ini sesuai dengan kebutuhan nyata institusi dan sangat kuat untuk skripsi.

📌 Ingin Sistem Lengkap?
Lanjutkan membaca implementasi penuh sistem arsip digital berbasis Django dengan RBAC di artikel berikut:

👉 Aplikasi CRUD Data Arsip Digital Berbasis Web Menggunakan Django

Penambahan Fitur Upload File Arsip

Dalam sistem arsip digital, data tidak hanya berupa teks, tetapi juga dokumen fisik yang telah dialihmediakan ke bentuk digital seperti PDF, dokumen Word, atau hasil pemindaian. Oleh karena itu, fitur upload file arsip menjadi bagian penting dari implementasi aplikasi CRUD berbasis web.

Fitur upload file berperan sebagai penghubung antara arsip fisik dan arsip digital dalam proses digitalisasi dokumen.

Konfigurasi Media File pada Django

Langkah pertama adalah mengatur direktori penyimpanan file arsip pada file settings.py.

import os

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

Konfigurasi tersebut menentukan bahwa seluruh file arsip akan disimpan di dalam folder media/.

Konfigurasi URL Media

Agar file dapat diakses melalui browser, tambahkan konfigurasi berikut pada file urls.py proyek Django.

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Modifikasi Model Arsip

Model arsip diperluas dengan menambahkan field untuk menyimpan file dokumen.

class Arsip(models.Model):
    judul = models.CharField(max_length=200)
    deskripsi = models.TextField()
    file_arsip = models.FileField(upload_to='arsip/')
    tanggal = models.DateField(auto_now_add=True)

    def __str__(self):
        return self.judul

File yang diunggah akan otomatis tersimpan pada folder media/arsip/.

Update Form Arsip

Agar pengguna dapat mengunggah file, form arsip perlu diperbarui.

from django.forms import ModelForm
from .models import Arsip

class ArsipForm(ModelForm):
    class Meta:
        model = Arsip
        fields = ['judul', 'deskripsi', 'file_arsip']

Implementasi Upload File pada View

Fitur upload file diterapkan pada proses tambah dan ubah data arsip. Akses ke fitur ini dibatasi menggunakan Role-Based Access Control (RBAC).

Tambah Arsip (Admin & Petugas)

@permission_required('arsip.add_arsip', raise_exception=True)
def tambah_arsip(request):
    form = ArsipForm(request.POST or None, request.FILES or None)
    if form.is_valid():
        form.save()
        return redirect('daftar_arsip')
    return render(request, 'arsip/form.html', {'form': form})

Edit Arsip

@permission_required('arsip.change_arsip', raise_exception=True)
def edit_arsip(request, id):
    arsip = Arsip.objects.get(id=id)
    form = ArsipForm(request.POST or None, request.FILES or None, instance=arsip)
    if form.is_valid():
        form.save()
        return redirect('daftar_arsip')
    return render(request, 'arsip/form.html', {'form': form})

Template Form Upload File

Form HTML harus menggunakan atribut multipart/form-data agar file dapat dikirim ke server.

<form method="post" enctype="multipart/form-data">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">Simpan</button>
</form>

Menampilkan dan Mengunduh Arsip

File arsip yang telah diunggah dapat ditampilkan dan diunduh oleh pengguna sesuai dengan hak aksesnya.

<a href="{{ a.file_arsip.url }}" target="_blank">
  Unduh Arsip
</a>

Role-Based Access Control pada Upload File

Role Upload Edit Hapus
Admin
Petugas
Pimpinan

Studi Kasus Implementasi

Pada sistem arsip sekolah, petugas arsip bertugas mengunggah dokumen hasil pemindaian, admin melakukan pengelolaan data, sedangkan pimpinan hanya memiliki akses untuk melihat dan mengunduh arsip.

📌 Lanjut ke Sistem Lengkap
Pelajari implementasi penuh sistem arsip digital berbasis Django dengan CRUD, upload file, dan RBAC pada artikel berikut:

Aplikasi CRUD Data Arsip Digital Berbasis Web Menggunakan Django

9. Kesimpulan

Dengan menggabungkan CRUD Django dan Role-Based Access Control, aplikasi menjadi lebih aman, terstruktur, dan siap digunakan dalam skala institusi. Tutorial ini merupakan fondasi kuat untuk pengembangan sistem informasi dan skripsi informatika.

📚 Artikel terkait:
Digitalisasi Dokumen dan Arsip
Konsep CRUD dalam Pemrograman Web

Tidak ada komentar:

Posting Komentar