1. Tambah Data
Edit form view tambah_data.
from apps.apps01.forms import FormSiswa
def tambah_siswa(request):
if request.POST:
form = FormSiswa(request.POST)
if form.is_valid():
form.save()
form = FormSiswa
pesan = "Berhasil tambah data!"
context = {
'form': form,
‘pesan’: pesan,
}
return render(request, 'tambah-siswa.html', context)
else:
form = FormSiswa
context = {
'form': form,
}
return render(request, 'tambah-siswa.html', context)
Edit file tambah-siswa.html.
{% extends "base.html" %}
{% block content %}
{% if pesan %}
{{ pesan }}
{% endif %}
<form action="/siswa-tambah/" method="POST" accept-charset="utf-8">
{% csrf_token %}
{{ form.as_p }}
<button>Tambah</button>
</form>
{% endblock content %}
2. Menampilkan Data
Edit form siswa.html.
{% extends 'base.html' %}
{% block content %}
...
{% for siswa in list_siswa %}
...
<h5 class="card-title">{{ siswa.nama_lengkap }}</h5>
<p class="card-text">{{ siswa.nomor }}</p>
<p class="card-text">{{ siswa.tgl_lahir }}</p>
<p class="card-text">{{ siswa.jurusan }}</p>
...
{% endfor %}
...
{% endblock content %}
3. Menampilkan Data (Semua)
def siswa(request):
list_siswa = Siswa.objects.all()
context = {
'list_siswa': list_siswa,
}
return render(request, 'siswa.html', context)
4. Menampilkan Data (Filter -1)
Menampilkan data berdasarkan filter tertentu.
def siswa(request):
list_siswa = Siswa.objects.filter(jurusan=1)
context = {
'list_siswa': list_siswa,
}
return render(request, 'siswa.html', context)
5. Menampilkan Data (Filter – 2)
Menampilkan data berdasarkan filter tertentu dan value-nya adalah field selain id-nya.
def siswa(request):
list_siswa = Siswa.objects.filter(jurusan__nama_jurusan="Teknik Informatika")
context = {
'list_siswa': list_siswa,
}
return render(request, 'siswa.html', context)
6. Menampilkan Data(Filter – 3)
Limit data yang ditampilkan. Misalkan hanya menampilkan maksimal 2 data.
def siswa(request):
list_siswa = Siswa.objects.filter(jurusan__nama_jurusan="Teknik Informatika")[:2]
context = {
'list_siswa': list_siswa,
}
return render(request, 'siswa.html', context)
7. Edit Data
from django.contrib import messages
def edit_siswa(request, nomor_siswa):
list_siswa = Siswa.objects.get(id=nomor_siswa)
template = 'edit-siswa.html'
if request.POST:
form = FormSiswa(request.POST, instance=list_siswa)
if form.is_valid():
form.save()
messages.success(request, "Berhasil edit data!")
return redirect('edit_siswa',nomor_siswa=nomor_siswa)
else:
form = FormSiswa(instance=list_siswa)
context = {
'form': form,
'siswa': list_siswa,
}
return render(request, template, context)
{% for message in messages %}
{% if message %}
<div class="alert alert-success">{{ message }}</div>
{% endif %}
{% endfor %}
<form action="{% url 'edit_siswa' siswa.id %}" method="POST" accept-charset="utf-8">
{% csrf_token %}
{{ form.as_p }}
<button class="btn btn-primary">Simpan</button>
<a href="{% url 'siswa' %}" class="btn btn-info">Kembali</a>
</form>
urlpatterns = [
...
path('siswa-edit/<int:nomor_siswa>', edit_siswa, name='edit_siswa'),
]
<div class="card-body">
...
...
<a href="{% url 'edit_siswa' siswa.id %}" class="btn btn-primary">Edit</a>
</div>
8. Hapus Data
def hapus_siswa(request, nomor_siswa):
siswa = Siswa.objects.filter(id=nomor_siswa)
siswa.delete()
return redirect('siswa'
)
<a href="{% url 'hapus_siswa' siswa.id %}" class="btn btn-danger">Hapus</a>
path('siswa/hapus/<int:nomor_siswa>', hapus_siswa, name='hapus_siswa'),
9. Hapus Data + Confirm Page
Buat views untuk confirm.
def hapus_siswa_confirm(request, nomor_siswa):
siswa = Siswa.objects.get(id=nomor_siswa)
context = {
'siswa': siswa,
}
return render(request, 'hapus-siswa-confirm.html', context)
Buat halaman confirm.
{% extends "base.html" %}
{% block content %}
<p>Apakah anda yakin ingin menghapus <strong>{{ siswa.nama_lengkap }}</strong>>?</p>
<a href="{% url 'hapus_siswa' siswa.id %}" class="btn btn-danger">Ya</a>
<a href="{% url 'siswa' %}" class="btn btn-info">Tidak</a>
{% endblock content %}
Rubah tujuan tombol hapus ke views confirm.
...
<a href="{% url 'hapus_siswa_confirm' siswa.id %}" class="btn btn-danger">Hapus
...
Tambahkan url.
...
path('siswa/hapus/confirm/<int:nomor_siswa>', hapus_siswa_confirm, name='hapus_siswa_confirm'),
...
Lanjutkan Membaca Materi Lengkap