Tutorial CRUD Django dari Nol dengan Role-Based Access Control
Tutorial ini merupakan lanjutan langsung dari artikel Konsep CRUD dalam Pemrograman Web.
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:
| Role | Hak Akses |
|---|---|
| Admin | Kelola user, semua data |
| Petugas | Tambah & ubah arsip |
| Pimpinan | Lihat 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.
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.
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.
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