CRUD PYTHON DJANGO MYSQL TUTORIAL Part.3 (PAGINATION)

paginationAssalamualaikum Wr Wb,

Oke kembali lagi saya sempatkan untuk mengisi blog ini mumpung masih ada waktu,

Ok dipertemuan sebelumya di crud django Part 1 untuk CRUD saja, sekarang saat ini, kita tambah fitur ada pagination.

bagi yg belum tahu pagination, adalah page2 yg ada dibawah halaman itu, setelah ter load datanya semua. Fungsinya ya agar tidak scroll banyak2, + mempercantik tamplilan.

Oh ya, enaknya menggunakan Framework adalah, fungsi2 seperti ini sudah include atau built in, jadi kita hanya tinggal menggunakannya saja. dan totalnya dari CRUD yg pertama, saya hanya mengubah 2 file saja.

untuk yg butuh lengkap bisa download di SINI

Untuk yg butuh lihat codenya sekarang, ya tidak apa2 saya kasih Screen Shootnya,

yg diubah adalah

views.py di dalam Folder CRUD

from django.shortcuts import render, redirect
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from .models import Member

# Create your views here.

def index(request):
members = Member.objects.all()
  page = request.GET.get(‘page’, 1)

    paginator = Paginator(members, 4)
    try:
        members = paginator.page(page)
    except PageNotAnInteger:
        members = paginator.page(1)
    except EmptyPage:
        members = paginator.page(paginator.num_pages)

#return render(request, ‘core/user_list.html’, { ‘users’: users })
context = {‘members’: members}
return render(request, ‘crud/index.html’, context)

def create(request):
member = Member(firstname=request.POST[‘firstname’],
lastname=request.POST[‘lastname’],
alamat=request.POST[‘alamat’],
agama=request.POST[‘agama’],)
member.save()
return redirect(‘/’)

def edit(request, id):
members = Member.objects.get(id=id)
context = {‘members’: members}
return render(request, ‘crud/edit.html’, context)

def update(request, id):
member = Member.objects.get(id=id)
member.firstname = request.POST[‘firstname’]
member.lastname  = request.POST[‘lastname’]
member.agama     = request.POST[‘agama’]
member.alamat    = request.POST[‘alamat’]
member.save()
return redirect(‘/crud/’)

def delete(request, id):
member = Member.objects.get(id=id)
member.delete()
return redirect(‘/crud/’)

yg saya BOLD adalah tambahan untuk CRUD tipe yg biasa tanpa paging, lalu ada 1 file lagi yg diubah adalah file index.html didalam Folder Template

{% extends ‘crud/base.html’ %}
{% block body %}
<form class=”form-inline”  action=”create” method=”POST”>
{% csrf_token %}
<div class=”form-group”>
<label for=”firstname”>Firstname</label>
<input type=”text” name=”firstname” value=”{{ members.firstname }}” required=”required”/>
</div>
<div class=”form-group”>
<label for=”lastname”>Lastname</label>
<input type=”text” name=”lastname” value=”{{ members.lastname }}” required=”required”/>
</div>
<br>
<div class=”form-group”>
<label for=”agama”>Agama</label><br>

<input type=”radio” name=”agama” value=”ISLAM” checked> ISLAM<br>
<input type=”radio” name=”agama” value=”KRISTEN”> KRISTEN<br>
<input type=”radio” name=”agama” value=”BUDHA”> BUDHA
<!–input type=”text” name=”agama” value=”{{ members.agama }}” required=”required”/–>
</div><br>
<div class=”form-group”>
<label for=”alamat”>Alamat</label>
<textarea class=”form-control” name=”alamat” rows=”5″>{{ members.alamat }}</textarea>
<!–input type=”text” name=”alamat” value=”{{ members.agama }}” required=”required”/–>
<button type=”submit” class=”btn btn-sm btn-primary”><span class=”glyphicon glyphicon-plus”></span> ADD</button>
</div>

</form>
<br />
<table class=”table table-bordered”>
<thead class=”alert-warning”>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Agama</th>
<th>Action</th>
</tr>
</thead>
<tbody>
{% for member in members %}
<tr>
<td>{{ member.firstname }}</td>
<td>{{ member.lastname }}</td>
<td>{{ member.agama }}</td>
<td><center><a class=”btn btn-sm btn-warning” href=”edit/{{ member.id }}”><span class=”glyphicon glyphicon-edit”></span> Edit</a>
<a class=”btn btn-sm btn-danger” href=”delete/{{ member.id }}”><span class=”glyphicon glyphicon-trash”></span> Delete</a></center>
</td>
</tr>
{% endfor %}
</tbody>
</table>

{% if members.has_other_pages %}
  <ul class=”pagination”>
    {% if members.has_previous %}
      <li><a href=”?page={{ members.previous_page_number }}”>&laquo;</a></li>
    {% else %}
      <li class=”disabled”><span>&laquo;</span></li>
    {% endif %}
    {% for i in members.paginator.page_range %}
      {% if members.number == i %}
        <li class=”active”><span>{{ i }} <span class=”sr-only”>(current)</span></span></li>
      {% else %}
        <li><a href=”?page={{ i }}”>{{ i }}</a></li>
      {% endif %}
    {% endfor %}
    {% if members.has_next %}
      <li><a href=”?page={{ members.next_page_number }}”>&raquo;</a></li>
    {% else %}
      <li class=”disabled”><span>&raquo;</span></li>
    {% endif %}
  </ul>
{% endif %}

{% endblock %}

Ok kalau bingung anda bisa jalankan dan download sendiri saja di SINI

Sekian dari Saya
Semoga bermanfaat.

Wassalamualaikum Wr.Wb

 

 

Leave a Reply

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