Tutorial REST API Python Django Part 1 — Instalasi & Pengenalan

Instalasi dan pengenalan salah satu framework terbaik Python, Django!

Hudya
6 min readApr 19, 2020

Halo semua, kembali lagi sama saya Kiddy. Pada kesempatan kali ini saya ingin berbagi insight mengenai cara membuat REST API di Python Django.

Kalo ngomongin Django, kayanya saya ngga perlu basa-basi lagi deh untuk jelasin apa ini framework, karena menurut saya pasti udah banyak yang tau, dan mungkin mencoba, tapi strugglenya mencoba django adalah….

ANJIR INI GIMANA SI STRUKTURNYA… RIBET BANGET.

Yes, ini adalah yang saya rasakan ketika berusia 18 tahun dan nyoba django di tahun 2016, saya sampe ngedownload banyak video tutorial django tapi tetep aja ngga nyambung! HAHAHAHA 😢 SAD BANGET ASLI DERITA BELAJAR OTODIDAK.

Setelah empat tahun, akhirnya saya paham struktur Django tuh sebenernya cukup mudah dimengerti, cuma emang karena ngga ada gurunya aja saya mesti berkelana mencari kitab suci dulu. 😅

Oke back to topic, bagi yang baca tutorial ini saya kembali anggap kalian udah tau apa itu Django, dan seperti biasa printilan tentang virtual environmentnya.

Yuk langsoong kita mulai, pertama kita buat dulu folder bernama django-todo, seperti biasa kalo belajar sama saya pasti akan membuat Todo List online hahaha, karena paling gampang, mudah dimengerti, serta menggunakan konsep join/foreign key sehingga kita bisa diperluas menjadi berbagai case.

Jangan lupa django-todonya dibuatkan virtual env lalu segera aktifkan.

Sekarang kita install library django dengan cara

pip install django

Setelahnya kita akan bisa menggunakan command si django. Pertama, kita akan membuat sebuah project. Buatlah dengan command berikut:

django-admin startproject todoproject

Nantinya django akan ngebuat sebuah folder project kamu bernama todoproject.

Nah setelahnya segera buka editor favorite kalian, kalo di Python jujur saya seneng banget pake PyCharm Community Editionnya Jetbrains, karena selain free license, kita paham lah seberapa GG editornya Jetbrains seperti Android Studio, PHPStorm, Webstorm. Eh, ini bukan promosi ya, pure opini. 😆

Oke sekarang kalo kita liat strukturnya kita akan menemukan struktur seperti ini, mari saya jelaskan mengenai struktur ini yang saya kutip langsung dari kitab suci Django:

  • Bagian terluar yaitutodoproject/yang menjadi parent (root folder dari todoproject) merupakan root directory atau yang jadi akar/container dari project kalian. Namanya ngga ngaruh ke django, bebas namain apa aja, tapi saya maunya todoproject aja hahaha.
  • manage.py: Sebuah command line yang membuat kamu bisa berkomunikasi sama perintah django, kalo di Laravel ibarat composer. Perintahnya bisa dibaca dokumentasinya di django-admin and manage.py.
  • Bagian dalamtodoproject/ adalah package python yang kita pake untuk projek Django kita. Nah nama ini sangat mempengaruhi pemanggilan file nantinya ketika kita mau melakukan import (cth: todoproject.urls).
  • todoproject/__init__.py: File kosong yang menjelaskan kalo ini Python dan folder ini harus dianggap sebagai paket dari python. Kalo kamu baru di python, baca deh dokumentasi tentang package disini, tutorialnya diambil langsung dari kitab suci Python.
  • todoproject/settings.py: Konfigurasi untuk projek Django kita, sama lah ya kaya Config di Laravel. Dokumentasinya tentangDjango settings klik aja disitu.
  • todoproject/urls.py: Deklarasi URL (Routes) di project kita, sama aja kaya routes di Laravel atau routes di Flask yang saya buat. Dokumentasi tentang URLs ada di URL dispatcher.
  • todoproject/asgi.py: File ini merupakan ASGI, yaitu konfigurasi tentang web-server dengan ASGI. Jadi ketika dideploy ke production server / cloud, konfigurasi tentang ASGI ada disini. Cara deploynya -> How to deploy with ASGI.
  • todoproject/wsgi.py: Sama aja kaya ASGI, file ini merupakan WSGI, yaitu konfigurasi tentang web-server dengan WSGI. Jadi ketika dideploy ke production server / cloud, konfigurasi tentang WSGI ada disini. Cara deploy -> How to deploy with WSGI.

Oke sekarang kita bakalan membuat sebuah app, kalo tadi kan kita membuat projek.

Loh Loh apa bedanya projek sama app, bang Kiddy?

Jadi gini anak muda *cielah*, di django kita mengenal istilah projek dan app, jika projek adalah projek todolist kita, maka appnya akan dibagi menjadi dua, yaitu:

  • user (segala service yang berhubungan dengan user)
  • todo (segala service yang berhubungan dengan todo)

Jadi app diibaratkan seperti service atau layanan, konsepnya sama seperti pengelompokkan sebuah logic yang khususnya kepada sebuah layanan saja.

Jadi didalam app todo, ngga akan ada logic yang hubungannya ke table user, begitu pula sebaliknya, di user tidak akan ada logic yang hubungannya ke table todo. Sama seperti konsep microservice yang hanya fokus mengurus ke layanan itu sendiri, dan memanggil layanan lainnya apabila dibutuhkan.

Ohiya, project juga diibaratkan sebuah website dan app merupakan komponennya, jadi misalkan kita membuat sebuah project lainnya anggap lah todolistoffline, maka kita bisa menggunakan app (service) yang telah kita buat yaitu user dan todo.

Jadi sebuah projek dapat memiliki banyak app, dan sebuah app dapat berada di berbagai projek. Sumber: Kita suci django.

Oke sekarang kita akan membuat app user dan todo, silahkan masuk ke inner folder todoproject dan jalankan fungsi berikut.

cd todoproject/
python manage.py startapp todo
python manage.py startapp user

Lihat? Sama seperti menjalankan composer di PHP atau NPM di Javascript, manage.py ini memiliki kegunaan yang sama.

Sekarang kita punya struktur seperti ini:

Dimana kalau kita bongkar sedikit usernya akan terlihat seperti ini:

Okeh kembali harus dijelasin nih wkwkwk

  • migrations/ konsepnya sama kaya migrations di Flask dan Laravel.
  • apps.py/ adalah konfigurasi didalam sebuah app, jadi ibarat file config.php didalam sebuah microservice.
  • admin.py: Django itu sudah memiliki built-in admin site, jadi kalo kita ngga mau repot-repot ngurusin admin panel, bagian ini bisa dipake untuk menambahkan app tersebut kedalam panel admin. Canggih ya?
  • models.py: Model yang akan berkomunikasi ke database.
  • tests.py: Unit Test sebuah app.
  • views.py: (Seriously I need to tell about this? lol jst kiddin) Ini, adalah ibarat controller yang bisa menghubungkan kita dengan views, dan model (namanya ngga harus views kok, tapi ini kan defaultnya si Django).

Buat yang penasaran pengen langsung nyoba jalanin django, kita coba dulu yuk first app kita. Silahkan jalankan command berikut dan akses ke localhost:8000.

python manage.py runserver
Tampilan awal Django

Taraaaa (Basro), sudah muncul deh, lanjut yok.

Sekarang kita edit dulu file views.py didalam user app dan tambahkan kode berikut ini:

from django.http import HttpResponse


def index(request):
return HttpResponse("Ini index User")

Oke sekarang kita buat file baru bernama urls.py didalam user app. Kita akan menyimpan semua routes kita didalam file ini. Silahkan coppas code dibawah ini.

from django.urls import path

from . import views

urlpatterns = [
path('', views.index, name='index'),
]

Udah selesai? Eits tentu saja belum donk, kita harus mengedit sedikit file urls.py yang ada di project kita yaitu file urls.py yang berada didalam todoproject folder.

from django.urls import path, include

urlpatterns = [
path('user/', include('user.urls')),
path('admin/', admin.site.urls),
]

Sekarang capcus kita jalanin lagi:

python manage.py runserver

Bang, tapi kok error not found ya pas saya akses localhost:8000, kenapa ya?

Betul sekali, pasti error karena Django menganggap kamu tidak melakukan setting terhadap index routes. Sehingga ya pasti error hahaha. Ini mah ntar aja kita urusin, sekarang kita akses aja localhost:8000/user.

Voila, Berhasil! Berhasil berhasil hore lolisimo berhasil~

Kalo gitu sekian ya, nanti berlanjut ke Part 2 kok~

Happy coding! ^^

--

--

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 (2)