Tutorial REST API Python Django Part 3— Create, Update, Delete

Finishing Create, Update, Delete dengan Django

Hudya
3 min readMay 22, 2020

Halo semua, kembali lagi bersama saya Kiddy. Pada kesempatan kali ini gue mau kembali berbagi insight mengenai kelanjutan dari tutorial sebelumnya disini. Nah apabila pada tutorial sebelumnya kita telah berhasil membuat migration dan mencoba mengembalikkan response API dengan struktur dasar kita. Sekarang kita coba melakukan CUD alias Create, Update, & Delete.

Oke kita langsung lanjut aja ya to the point. Pertama kita akan membuat Createnya terlebih dahulu, yaitu lihat kode berikut pada file views.py di folder user:

def index(request):
if request.method == 'GET':
user = Users.objects.all()
user = transformer.transform(user)
return Response.ok(values=user)
elif request.method == 'POST':
json_data = json.loads(request.body)

user = Users()
user.name = json_data['name']
user.email = json_data['email']
user.password = make_password(password=json_data['password'])
user.save()

return Response.ok(
values=transformer.singleTransform(user),
message="Added!"
)

sama seperti Flask kita harus memisahkan apakah metode yang dikirimkan dari request merupakan GET atau POST.

Kita melakukan json.loads alias memparsing dari request.body sehingga dapat menjadi dictionary di python, barulah setelah itu kita bisa masukkan sesuai entity di table kita.

Pada bagian password kita melakukan hashing dengan hashing bawaan django, sehingga password yang masuk ke DB akan terhashing~

Response yang dikembalikan diwrap kedalam transform agar Objectnya bisa diserialize dan mengembalikkan pesan “Added!”.

Untuk bagian Update dan Deletenya silahkan kalian ubah sedikit method shownya.

def show(request, id):
if request.method == 'GET':
user = Users.objects.filter(id=id).first()

if not user:
return Response.badRequest(message='Pengguna tidak ditemukan!')

user = transformer.singleTransform(user)
return Response.badRequest(values=user)
elif request.method == 'PUT':
json_data = json.loads(request.body)

user = Users.objects.filter(id=id).first()
if not user:
return Response.badRequest(message="Pengguna tidak ditemukan")
user.name = json_data['name']
user.email = json_data['email']
user.password = make_password(password=json_data['password'])
user.save()

return Response.ok(
values=transformer.singleTransform(user),
message="Updated!"
)
elif request.method == 'DELETE':
user = Users.objects.filter(id=id).first()
if not user:
return Response.badRequest(message="Pengguna tidak ditemukan")

user.delete()
return Response.ok(message="Deleted!")
else:
return Response.badRequest(message="Invalid method!")

Untuk update, konsepnya hampir sama seperti create, bedanya tentu saja update tidak sekedar melakukan inisialisasi object user, tapi mencari data pada id dan apabila datanya tidak ditemukan, akan mengambalikan pesan “Pengguna tidak ditemukan”.

pada bagian else di akhir kondisi, ditujukan apabila kalian menggunakan method POST tapi URL kalian masih menuju /{id} sehinga kita akan mengembalikan error invalid method.

Kalo udah jangan lupa dijalankeun dan coba lagi.

python manage.py runserver

Silahkan dicoba hit ke method POST

Tentu saja pada database saya akan bertambah.

Inilah yang terjadi kalo kita menggunakan else pada method show(memang harusnya digunakan), ini suka terjadi karena kita lupa ganti methodnya saat testing (termasuk saya hehehe)

Sekarang sudah aman gengs.

Tentu saja si Budi namanya berubah menjadi Budi Toy Story

Sekarang kita singkirkan si Budi Toy Story ini.

Dan menghilang pada peredaran database kita.

Mudah banget kan membuat API di Django? Ohiya projek API dengan Django ini belum selesai, saya akan lanjutkan dengan Login dan Autentikasi JWT di artikel selanjutnya, stay tune ya!

--

--

Hudya
Hudya

Written by Hudya

Which is more difficult, coding or counting? Not both of them, the difficult one is sharing your knowledge to people without asking the payment.

Responses (1)