Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python

Panduan Pemula untuk Kerangka Kerja Django

by
Difficulty:BeginnerLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Sayektisri1967 (you can also view the original English article)

Jadi Anda belajar menggunakan Kerangka Web Django dan Anda menyukainya. Tetapi Anda ingin API yang menarik dan mudah digunakan untuk aplikasi Anda? Tidak terlihat lagi dari Django Rest Framework (DRF). DRF sangat kuat, canggih, dan sangat mudah digunakan. Ini menawarkan versi web API yang menarik, dapat dijelajahi, dan opsi mengembalikan JSON mentah. The Django Rest Framework menyediakan serialisasi model yang kuat, menampilkan data menggunakan tampilan berbasis fungsi standar, atau mendapatkan granular dengan tampilan berbasis kelas yang kuat untuk fungsionalitas yang lebih kompleks. Semua dalam pembungkus yang sepenuhnya REST compliant. Mari kita gali.

Meletakkan Dasar

Ketika bekerja dengan aplikasi Python, itu selalu ide yang baik untuk sandbox pengembangan Anda dengan lingkungan virtual. Ini membantu mencegah tabrakan versi antara pustaka yang Anda butuhkan dalam aplikasi dan pustaka yang mungkin telah Anda instal di komputer Anda, itu membuatnya mudah untuk menginstal dependensi dalam virtual env menggunakan file requirements.txt, dan terakhir itu membuat berbagi lingkungan pengembangan Anda dengan pengembang lain sekejap.

Tuts + memiliki dua video yang sangat bagus tentang cara menginstal virtualenv dan virtualenvwrapper. Luangkan beberapa menit untuk berjalan melalui video-video tersebut untuk mendapatkan virtualenv dan virtualenvwrapper yang diinstal di komputer Anda. Jika Anda sudah menginstalnya, lewati bagian berikutnya.

Mengatur Lingkungan Virtual Anda

Hal pertama yang akan kami lakukan sebagai bagian dari aplikasi kami adalah untuk mengatur lingkungan virtual. Masukkan perintah berikut di Terminal Anda.

Tidak masalah di mana Anda berada dalam sistem file ketika perintah-perintah ini dijalankan. Semua file virtualenv disimpan di lokasi terpusat dan diaktifkan sesuai permintaan.

Menginstal Aplikasi Django

Karena artikel ini bukan tentang Django itu sendiri, saya telah menghemat waktu dengan membuat repositori yang berisi aplikasi yang akan kami kerjakan. Ini adalah aplikasi rak buku sederhana yang akan memungkinkan kita menyimpan daftar penulis dan buku. Unduh repositori pendamping ke artikel ini, ke direktori pilihan Anda, kemudian jalankan pip install -r requirements.txt untuk menginstal semua dependensi. Ingat untuk memastikan Anda telah mengaktifkan lingkungan virtual yang kami siapkan di langkah terakhir. Setelah instalasi selesai, Anda harus dapat mengetikkan fab runserver untuk memulai server web lokal dan membuka browser web yang mengarah ke http://127.0.0.1:8000/. Jika Anda melihat daftar penulis di layar maka Anda siap untuk pergi.

Jika pada titik tertentu Anda tidak mendapatkan hasil yang diharapkan, cobalah mengalihkan cabang repositori lokal Anda ke final untuk melihat hasilnya: git checkout final.

Fab? Apa itu?

Fab == Fabric, pelari tugas Python. Dari dokumen:

"Fabric adalah alat pustaka dan baris perintah Python (2.5 atau lebih tinggi) untuk menyederhanakan penggunaan SSH untuk penyebaran aplikasi atau tugas administrasi sistem."

Sementara diskusi yang lebih lengkap tentang Fabric berada di luar cakupan artikel ini, saya telah menerapkan beberapa perintah dasar yang membuat bekerja dengan aplikasi ini sedikit lebih mudah. Anda telah melihat perintah fab runserver. Ada juga perintah fab shell  yang menampilkan shell interaktif iPython dalam konteks aplikasi dan perintah fab syncdb  yang menjalankan perintah syncdb Django untuk menyelaraskan perubahan dalam model ke database.

Bekerja Dengan Serialisasi

Salah satu fitur kuat dari Django Rest Framework adalah built in model serialization yang ditawarkannya. Dengan hanya beberapa baris kode, Anda dapat menyusun representasi kuat dari data Anda yang dapat dikirimkan dalam sejumlah format. Seperti yang disebutkan sebelumnya, aplikasi kami akan menjadi aplikasi rak buku sederhana, dengan Penulis dan Buku. Saya sudah membuat model Author dan Book untuk Anda, jadi buka /app/bookreview/models.py. Sudah ada beberapa Penulis yang disimpan dalam database SQLite lokal, jadi mari kita buka shell interaktif untuk aplikasi kita dan melihat-lihat. Beralih ke jendela Terminal Anda, pastikan Anda berada di ./app direktori dan ketik perintah berikut.

Setelah beban shell, masukkan beberapa baris berikutnya untuk mengambil catatan Penulis dari database, yang kebetulan menjadi milik saya. Kebetulan sekali. :)

Demikian pula, Anda dapat mengambil semua catatan Penulis dari database dengan perintah yang berbeda:

Sayangnya ini tidak mengembalikan data yang dapat dipahami oleh panggilan AJAX. Jadi mari kita tambahkan serializer untuk Penulis. Tutup shell dengan mengetik quit dan buka bookreview / serializers.py. Ketik, atau tempelkan, beberapa baris kode berikutnya dan simpan file.

Tanpa membuat perubahan lagi, serializer memberi kita sedikit kekuatan. Kembali ke shell dan mari kita tinjau.

Mari tambahkan beberapa baris kode dan lihat apa yang akan ditunjukkan API kami di browser setelah data kami dijalankan melalui AuthorSerializer baru kami.

Memeriksa API yang Dapat Diakses Web

Pertama, buka bookreview / urls.py dan tambahkan baris berikut tepat setelah rute index_view:

Selanjutnya, buka bookreview/views.py dan tambahkan baris ini ke bagian akhir file:

Kemudian pastikan untuk menambahkan impor untuk AuthorSerializer di bagian atas halaman:

Tampilan default untuk Kerangka Kerja Django adalah APIView. Ini memungkinkan Anda untuk menentukan metode get, put, dan delete Anda sendiri. Ini adalah cara yang baik untuk mendapatkan fungsionalitas dasar tetapi masih memiliki kendali atas hasil akhir. Dalam kasus kami, kami membiarkan DRF melakukan pengangkatan berat bagi kami dengan memperluas ListAPIView. Kami hanya perlu menyediakan beberapa bit informasi untuk memungkinkan DRF untuk menghubungkan potongan-potongan. Kami memberikannya model Author sehingga ia tahu bagaimana berbicara dengan database, dan AuthorSerializer sehingga DRF tahu cara mengembalikan informasi. Kami hanya akan bekerja dengan beberapa yang dibangun di APIViews, tetapi Anda dapat membaca tentang semua opsi di situs web Django Rest Framework.

Setelah Anda melakukan perubahan tersebut, pastikan server Anda berjalan dengan mengetikkan fab runserver lalu masukkan URL http://127.0.0.1:8000/authors/. Anda harus melihat halaman tampilan API yang dirancang menarik yang berisi daftar semua penulis dalam database.

Sekarang setelah kami memiliki tampilan API Penulis, coba tekan URL itu dengan perintah curl:

Manis sekali eh?

Memberi Para Penulis Beberapa Buku!

Meskipun tampilan API ini cukup licin, ini adalah satu-satu dengan basis data. Mari kita menaikan tampilan API kami dengan menyusun kumpulan data yang lebih rumit untuk Penulis dengan menyertakan daftar semua buku mereka. Buka bookreview/serializers.py dan tambahkan baris kode berikut sebelum definisi kelas AuthorSerializer.

Sebelum kami dapat menambahkan buku ke AuthorSerializer, kami harus membuat serial buku. Ini akan terlihat sangat akrab bagi Anda. Karena hampir identik dengan AuthorSerializer, kami tidak akan membahasnya.

Selanjutnya, tambahkan baris berikut segera setelah pengelompokan kelas AuthorSerializer:

Kemudian tambahkan books ke properti bidang kelas Meta dalam dari AuthorSerializer:

Muat ulang /authors/ endpoint dan Anda sekarang harus melihat array buku yang masuk untuk setiap penulis. Tidak buruk hanya untuk beberapa baris kode eh ?.

DRF yang baik memang!

Gunakan SerializerMethodField untuk Membuat Properti Kustom

Serializer itu pintar ... ketika kami menunjukkan model mana yang harus bersambung dalam kelas meta dalam, ia tahu segalanya tentang model itu ... properti, panjang, default, dan sebagainya. Perhatikan bahwa kami tidak mendefinisikan properti apa pun yang ditemukan pada model secara langsung di dalam serializer, kami hanya menunjukkan bidang mana yang harus dikembalikan ke API di properti fields.

Karena DRF sudah tahu tentang sifat-sifat model, itu tidak mengharuskan kita untuk mengulang. Jika kita ingin, kita bisa eksplisit di BookSerializer dan menambahkan baris berikut ... dan DRF akan sama bahagia.

Metode serializers.field memungkinkan Anda untuk menunjuk ke properti model yang ada, bidang source, dan memungkinkan Anda secara eksplisit menamainya sesuatu yang lain ketika mengembalikannya ke pengguna akhir. Tapi bagaimana dengan serializers.SerializerMethodField? Yang memungkinkan Anda untuk membuat properti khusus, yang tidak terkait langsung dengan model, yang kontennya adalah hasil pemanggilan metode. Dalam kasus kami, kami akan mengembalikan URL yang berisi daftar tempat yang dapat Anda kunjungi untuk membeli buku. Mari tambahkan metode khusus sekarang.

Segera setelah docstring BookSerializer tambahkan string berikut:

Kemudian setelah definisi class Meta dari BookSerializer tambahkan baris berikut:

Lalu terakhir kita perlu menambahkan properti baru kita, ke daftar bidang. Ubah ini:

ke ini:

Muat ulang /authors/ endpoint dan Anda sekarang harus melihat URL kembali bersama dengan informasi lain tentang buku itu.

Menambahkan Endpoint Pengarang

Kami sudah memiliki daftar penulis, tetapi alangkah baiknya bagi setiap penulis untuk memiliki halaman mereka sendiri ... seperti MySpace, kan? Memungkinkan menambahkan titik akhir API untuk melihat satu penulis. Buka urls.py dan tambahkan baris berikut setelah rute author-list:

Kemudian buka views.py dan tambahkan baris berikut setelah kelas AuthorView:

Klik salah satu nama penulis di halaman indeks dan Anda akan melihat halaman Instance pembuat dimuat.

Refactoring untuk Menang!

Sekarang adalah saat yang tepat untuk melakukan refactoring cepat. Karena Django menawarkan opsi penamaan rute Anda, kami dapat mereferensikan rute dengan nama itu. Ini mencegah kita untuk membangun URL secara manual. Buka templates/index.html dan ganti potongan berikut:

dengan garis ini

Menyimpan Data: Biarkan DRF Bekerja untuk Anda!

Hingga saat ini aplikasi kami hanya telah dibaca. Saatnya untuk mulai menyimpan beberapa data. Buka template/index.html dan tambahkan baris berikut di bawah header penulis:

Ketikkan nama, milik Anda jika Anda mau, dan tekan kirim ... dan presto, Anda mendapatkan ... kesalahan?

DRF tidak begitu ajaib ... atau apakah itu?

Buka views.py, ubah kelas yang diberikan oleh AuthorView dari generics.ListAPIView ke generics.ListCreateAPIView. Kemudian coba permintaan Anda lagi. Bum! Anda seorang penulis! Dan guru olahraga kelas empat Anda mengatakan Anda tidak akan pernah berarti apa-apa. Tapi apa yang dia tahu, dia harus berkeringat sepanjang hari. Kembali ke halaman penulis utama untuk melihat nama Anda di lampu.

Apa yang terjadi? Tampilan API default kami hanya menggunakan permintaan GET yang diizinkan ke endpoint pembuat. Dengan mengubahnya ke ListCreateAPIView, kami memberi tahu DRF bahwa kami ingin juga mengizinkan permintaan POST. Itu melakukan segalanya bagi kita. Kita bisa dengan mudah mendefinisikan metode post kita sendiri dalam AuthorView dan melakukan beberapa hal ekstra di sana. Mungkin terlihat seperti ini:

Perlu diingat bahwa ketika DRF melakukan penegakan integritas basis data berdasarkan properti model, kami tidak menetapkan jenis keamanan apa pun yang dapat mengakses atau menggunakan formulir ini. Menyelam ke dalam keamanan, masuk, dan mengelola perizinan berada di luar cakupan artikel ini, tetapi cukup untuk mengatakan bahwa DRF memiliki fungsi untuk memungkinkan akses ke tampilan yang telah Anda kerjakan dan cukup mudah untuk diatur.

Penyelesaian

Anda telah belajar cukup banyak tentang Kerangka Kerja Django sekarang: bagaimana menerapkan API yang dapat dilihat web yang dapat mengembalikan JSON untuk Anda, cara mengonfigurasi serializers untuk menulis dan mengubah data Anda, dan bagaimana menggunakan tampilan berbasis kelas untuk abstrak kode boilerplate.

DRF memiliki lebih dari beberapa bit yang kami dapat untuk menutupi, tapi saya harap Anda akan menemukannya berguna untuk aplikasi Anda berikutnya.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.