Anda di halaman 1dari 98

Web Framework Django Python

WEB FRAMEWORK
Django Python

Oleh:

Hari Fitraningrum K.

PROGRAM STUDI TEKNIK INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS TRUNOJOYO
2020
Web Framework Django Python

P a g e | ii
Web Framework Django Python
Web Framework Django Python

LEMBAR PENGESAHAN
Telah diperiksa dan diuji oleh Pembimbing

Pada Tanggal:

Dengan Nilai:

Menyetujui,

Dosen Penguji, Dosen Pembimbing,

Ach. Khozaimi, S.Kom.,M.Kom. Mula’ab, S.Si., M.Kom.


NIP. 19860926 201404 1 001 NIP. 19730520 200212 1 001

Mengetahui,
Koordinator Kerja Praktek,

Yoga Dwitya Pramudita, S.Kom., M.Cs.


NIP. 19840413 200812 1 002
Web Framework Django Python

Kata Pengantar

Framework Django merupakan Kerangka kerja full-stack


untuk membangun aplikasi web dengan menggunakan bahasa
pemrograman Python. Framework akan membantu kita membuat
suatu aplikasi web lebih cepat daripada harus menulis atau
membuat dari nol. Framework Django ini sudah digunakan
diberbagai kalangan, mulai dari perorangan, situs kecil sampai
situs terkenal seperti Instagram, Disqus, Pinterest dan masih
banyak lagi.
Django pertama kali dikembangkan pada tahun 2003 dan
2005 oleh beberapa web developer yang bertugas membuat dan
merawat web portal (newspaper website). Mereka menulis ulang
kode-kode yang telah dibuat tersebut dengan menerapkan pola
pendesainan lalu menyebarkannya sebagai project open-source
dengan nama Django pada bulan july 2005. Django kemudian
semakin berkembang dan dirilis versi 1.0 pada bulan September
2008.
Buku dengan judul Tutorial Framework Django ini
mencoba membahas Framework Django secara praktis dengan
disertai contoh-contoh. Dengan adanya buku ini diharapkan bisa
membantu anda menguasai Framework Django. Buku ini cocok
untuk anda yang baru mempelajari tentang Framework Django.
Penulis berharap buku ini bisa bermanfaat untuk
perkembangan pemahaman tentang web khususnya dalam
pengetahuan Framework Django. Penulis sangat mengharapkan
kritik dan saran mengenai buku ini yang dapat disampaikan melalui
email penulis harifitraningrum@gmail.com
Penulis,

Hari Fitraningrum

Page |i
Web Framework Django Python

DAFTAR ISI

Table of Contents
Kata Pengantar .............................................................................. i
DAFTAR ISI .................................................................................... ii
BAB 1 ............................................................................................ 2
PENGANTAR.................................................................................. 2
Sejarah Django ....................................................................... 3
Instalasi Django ...................................................................... 3
BAB 2 ............................................................................................ 8
PENGENALAN PROJECT ................................................................ 8
Pengenalan Project ................................................................. 8
Pengenalan Views ................................................................. 10
Pengenalan Templates ......................................................... 11
Pengenalan App .................................................................... 12
Pengenalan URL App .......................................................... 14
BAB 3 .......................................................................................... 17
TEMPLATE PADA APP ................................................................. 17
Template pada App .............................................................. 17
Template Variabel ................................................................ 18
Template Logic ..................................................................... 20
BAB 4 .......................................................................................... 22
STATIC FILE ................................................................................. 22
Static File ............................................................................... 22
Static File menambah Gambar ........................................... 23

P a g e | ii
Web Framework Django Python

Static File menambah css ..................................................... 24


Static File menggunakan bootstrap dan javascripts ......... 25
Template Inheritance dan Include ...................................... 27
BAB 5 .......................................................................................... 32
MODEL DAN DATABASE ............................................................. 32
Pengenalan Django Model ................................................... 32
Setup MySQL + XAMPP ..................................................... 34
Membuat Model pada App .................................................. 38
Menampilkan Data ke View ................................................ 41
Model Field, Tipe Data, Options, Dan Migrasi .................. 43
Model Object Relasional Mapping dengan Python Shell . 45
Slug and Slugify .................................................................... 48
BAB 6 .......................................................................................... 50
MEMBUAT URL ........................................................................... 50
Membuat URL Dinamis ....................................................... 50
URL Name dan Namespace ................................................. 51
BAB 7 .......................................................................................... 55
FORM .......................................................................................... 55
Pengenalan Form .................................................................. 55
Menggunakan Class Form ................................................... 57
Form Field dan Option ........................................................ 59
Widget Form ......................................................................... 61
Menambahkan Attribute pada Komponen Form ............. 62
Menyimpan data form ke database/model ......................... 64
BAB 8 .......................................................................................... 67

P a g e | iii
Web Framework Django Python

CRUD........................................................................................... 67
Validasi Form ....................................................................... 67
Model Form........................................................................... 68
Model form validators.......................................................... 69
Menambahkan Attribute pada tag model Form ............... 70
Delete Data pada Form ........................................................ 72
Update Data pada Form ...................................................... 74
BAB 9 .......................................................................................... 79
CLASS BASED VIEWS ................................................................... 79
Template Views (Class based views) ................................... 79
BAB 10 ........................................................................................ 82
USER MANAGEMENT.................................................................. 82
User Management................................................................. 82
Authentication User, Login dan Logout ............................. 83
Pengenalan User Permition Check ..................................... 84
User and Group Permition Test .......................................... 86
DAFTAR PUSTAKA ....................................................................... 89

P a g e | iv
Web Framework Django Python

BAB 1
PENGANTAR

Page |1
Web Framework Django Python

BAB 1

PENGANTAR

Python merupakan salah satu bahasa pemrograman


tingkat tinggi (high level language). Python diklaim sebagai
bahasa yang menggabungkan kapabilitas, kemampuan,
dengan sintaksis kode yang sangat jelas, dan dilengkapi
dengan fungsionalitas pustaka standar yang besar serta
komprehensif.

Django adalah web framework berbasis bahasa


pemrograman Python. Django adalah web framework
Python yang didesain untuk membuat aplikasi web yang
dinamis, kaya fitur dan aman. Django yang dikembangkan
oleh Django Software Foundation terus mendapatkan
perbaikan sehingga membuat web framework yang satu ini
menjadi pilihan utama bagi banyak pengembang aplikasi
web.

Web framework adalah kerangka kerja perangkat


lunak yang dirancang untuk mendukung pengembangan
aplikasi web termasuk web service, web resources, dan web
API. Web framework menyediakan cara standar untuk

Page |2
Web Framework Django Python

membangun dan mengembangkan aplikasi web dan


membuat pekerjaan pengembang menjadi lebih mudah.

Sejarah Django
Django dibuat pada musim gugur 2003,
ketika pemrogram web di surat kabar Lawrence Journal-
World , Adrian Holovaty dan Simon Willison , mulai
menggunakan Python untuk membangun aplikasi. Jacob
Kaplan-Moss dipekerjakan di awal pengembangan Django
tak lama sebelum magang Simon Willison berakhir. Dirilis
secara publik di bawah lisensi BSD pada Juli 2005.
Kerangka ini dinamai gitaris Django Reinhardt.

Pada bulan Juni 2008, diumumkan bahwa Django


Software Foundation (DSF) yang baru dibentuk akan
mempertahankan Django di masa mendatang.
Instalasi Django
Sebelum masuk diinstalasi Django, maka perlu PC yang
sudah terinstal Python. File installer python dapat diunduh
melalui web www.python.org.

Berikut ini adalah langkah-langkah instalasi Django:

• Instal file python-3.msi.

Page |3
Web Framework Django Python

Setelah download selesai, akan mendapatkan file


python-3.4.2.msi. File ini akan melakukan instalasi
ke sistem windows.
• Buka CMD
Masuk ke direktori yang akan digunakan sebagai
instalasi project.
• Pastikan pip adalah versi terbaru. Jika pip belum
versi terbaru, lakukan uprgrade pip dengan ‘python -
m pip install –upgrade pip’
• Buat venv project. Venv adalah virtual environment
sedangkan Env adalah nama direktori dari virtual
environment tersebut.

• Aktifkan venv yang telah dibuat dengan cara run .bat,


agar lebih mudah gunakan CMD.

• Instalasi Django

Page |4
Web Framework Django Python

• Selanjutnya buat project Django dan masuk ke


direktori Django

• Jalankan server Django dengan menjalankan perintah


runserver pada manage.py menggunakan CMD.

• Untuk memastikan bahwa serverweb berjalan atau


tidak, salin link http://127.0.0.1:8000/ dan buka pada
web browser.

• Untuk menghentikan serverweb bisa menggunakan


ctrl + c pada CMD atau menuliskan ‘deactivate.bat’
lalu tekan enter.

Page |5
Web Framework Django Python

Page |6
Web Framework Django Python

BAB 2
PENGENALAN PROJECT

Page |7
Web Framework Django Python

BAB 2

PENGENALAN PROJECT

Pengenalan Project
Pada Web Framework Django ada beberapa
komponen yang didapat untuk berekstensi .py atau file script
menggunakan bahasa pemrograman python.

Dalam hal ini, terdapat isi file-file seperti gambar diatas.

• __init__.py
File kosong yang memberitahu Python bahwa
direktori ini dianggap sebagai paket Python. Tapi
tetap berguna sebagai inisialisasi yang menunjukkan
bahwa folder ini adalah suatu module.
• asgi.py
Titik masuk untuk web server yang kompatibel
dengan ASGI untuk melayani proyek Anda.

Page |8
Web Framework Django Python

• settings.py
File setting dari project yang telah dibuat,
didalamnya terdapat konfigurasi seperti database,
enkripsi, template, dan pengaturan lainnya.
• ulrs.py
File yang berguna untuk bagian mendeklarasikan
URL project Django.
• wsgi.py
File untuk titik masuk web server untuk melayani
project Django.

Seperti yang telah dijelaskan diatas bahwa request


URL user akan diteruskan ke file urls.py diatas. Jadi untuk
pembuatan project maka diperlukan memasukkan URL ke
dalam urls.py

Page |9
Web Framework Django Python

Masukkan URL yang ingin dibuat pada list


urlpatterns. Seperti contoh saya ingin membuat halaman
index, maka cukup masukkan path(' ', admin.site.urls).
Dalam contoh ini URL halaman index dituliskan
dalam bentuk ' ' dan untuk views yang akan dituju isikan
parameter kedua pada fungsi path().

Pengenalan Views
Pada contoh sebelumnya, pembuatan view belum
dibahas secara mendetail. View masih berada didalam satu
file dengan urls. Agar file aplikasi project lebih tertata maka
kita buat file untuk views python yang terpisah dari urls.py.

P a g e | 10
Web Framework Django Python

Didalam file views tersebut terdapat fungsi def


index(request) yang sebelumnya berada didalam file urls.py.
Agar fungsi tersebut diakses oleh urls, maka di import
terlebih dahulu kedalam file from.import views views.py
dengan cara menambahkan pada file urls.py.

Pengenalan Templates
Template pada Framework Django dibuat untuk
memudahkan developer web dalam membangun code
HTML. Penggunaan template diharapkan dapat
mempercepat dan menghindari penulisan code yang
berulang-ulang pada code HTML.

Template dapat diaktifkan dengan menambahkan


lokasi folder pada script DIRS [] yang ada pada setting.py
dalam contoh template diletakkan di direktori utama project
Django.

Biasanya template diletakkan pada app (pada subbab


selanjutnya akan dijelaskan) diharapkan setiap sub project
(app) bisa memiliki url, views dan template sendiri.

P a g e | 11
Web Framework Django Python

Setelah membuat folder, buatlah file html yang akan


dijadikan template pada folder template serta isikan pula title
dan body. Selanjutnya menambahkan import from
Django.shortcuts import render pada file views dan merubah
return value yang semula Httpresponse menjadi return
render(request,’index.html’), index.html adalah file yang
dituju.

Pengenalan App
App adalah bagian dari project yang saling
berhubungan sehingga membentuk suatu project. App
sendiri mempunyai komponen masing-masing seperti views,
model, template, dan lain-lain tergantung app itu sendiri.

App dibuat menggunakan CMD dengan


memasukkan perintah startapp pada manage.py seperti from

P a g e | 12
Web Framework Django Python

python manage.py startapp (name app). Sebelumnya,


aktifkan venv dan masuk ke direktori project. Maka, folder
tersebut akan terbentuk dengan sendirinya.

Dalam folder app terdapat beberapa komponen bawaan yang


dibentuk oleh python seperti:

• __init.py
• admin.py
• app.py
• models.py
• test.py
• views.py

admin.py dan model.py nanti akan digunakan saat


membuat database.

Saat pertama kali membuat project Django, kita tidak


diberikan views.py didalamnya. Karena diharapkan semua
komponen tersebut berada pada masing-masing app.

P a g e | 13
Web Framework Django Python

Setelah membuat app, daftarkan app yang telah dibuat


pada INSTALLED_APP yang ada di settings.py agar isi file
static dan template dapat digunakan atau diakses oleh app
lain atau project.

Pengenalan URL App


Pada pembahasan sebelumnya sudah disinggung
bahwa dengan adanya app diharapkan untuk url, views,
template dan lain- lain terdapat di masing-masing app. Maka
dari itu pembahasan kali ini akan menjelaskan tentang
penggunaan url yang berada di direktori app sendiri.
Pembuatan url pada app diawali dengan membuat file
urls.py pada folder app. Selanjutnya pada proses import path
diberikan juga include. Penambahan include disini untuk
mengakses urls.py yang ada pada app lain. Selanjutnya
tinggal memasukkan url app path('blog/',
include('blog.urls')),pada urls.py yang ada di project.

P a g e | 14
Web Framework Django Python

Ketika request client adalah blog, maka urls.py di


project akan meneruskan request ke urls.py yang ada di blog
dan meresponnya.

Penggunaan url pada app memberikan kemudahan


dalam penanganan, baik masalah pengembangan maupun
jika terjadi suatu error pada url.

P a g e | 15
Web Framework Django Python

BAB 3
TEMPLATE PADA APP

P a g e | 16
Web Framework Django Python

BAB 3

TEMPLATE PADA APP

Template pada App

Template pada app adalah penggunaan template


HTML didalam folder atau direktori app. Ada beberapa hal
yang perlu diperhatikan sebelum akhirnya template pada app
dapat digunakan :

• Pastikan list INSTALLED_APPS pada settings.py


sudah dimasukkan nama app. Memasukkan nama app pada
list diperlukan agar pencarian folder templates sampai pada
app.

• Pada list TEMPLATES pastikan sudah memasukkan


folder pada DIRS[‘ ’] (sudah dijelaskan pada pengenalan
templates). Selanjutnya APP_DIRS pastikan sudah true
untuk memberikan akses pencarian direktori templates pada
app.

P a g e | 17
Web Framework Django Python

Setelah memastikan hal diatas sudah dilakukan maka


selanjutnya adalah membuat direktori templates pada app.
Agar template antar app tidak tertukar maka pada folder
templates buatlah folder lagi dengan nama app masing-
masing.

Template Variabel
Template Variabel adalah penggunaan template dimana
file HTML pada template diatur langsung oleh views.py
penggunaan template variable dapat mempermudah pembuatan
HTML, seperti contoh saat ingin membuat 2 page html yang sama,
akan tetapi berbda pada isi tag-nya maka kita bisa mengatur isi tag
tersebut melalui views.py dan menggunakan sebuah file HTML
sebagai kerangka.

Untuk menggunakan template variable yang perlu

P a g e | 18
Web Framework Django Python

dilakukan adalah membuat kerangka HTML yang akan digunakan


pada beberapa page. Membuat kerangka tersebut dengan
menambahkan {{}} sebagai penerima input dari views.py (sering
disebut dengan context) seperti contoh <title>{{ var }} |
Blog</title>. Context pada views.py berupa dictionary yang
nantinya akan diakses oleh html sesuai nama variable. Variabel
context selanjutnya dimasukkan sebagai parameter pada fungsi
render(request, 'about/index.html', context).
Selain digunakan didalam tag, context juga bisa digunakan dalam
attribute tag, seperti contoh <a
href="{{judul}}">{{h1}}</a>.

Dengan menggunakan template variable satu template

P a g e | 19
Web Framework Django Python

html dapat dijadikan banyak tampilan page. Hal ini tentunya akan
memudahkan proses pengerjaan suatu web.

Template Logic

Penggunaan template juga bisa melibatkan penulisan


script logika untuk melakukan proses seperti pengkondisian dan
perulangan. Penulisan script logika pada html dimulai dengan
{%script logika%} dan diakhiri {%akhir script logika%}. Dalam
pembahasan ini, akan menggunakan for sebagai contoh.

Perulangan for akan dilakukan dengan mengambil


variable list menu yang ada didalam context. Melakukan
perulangan pada tag <li> dan <a> sebanyak yang ada didalam list.

P a g e | 20
Web Framework Django Python

BAB 4
STATIC FILE

P a g e | 21
Web Framework Django Python

BAB 4

STATIC FILE

Static File

Dalam sebuah web umumnya membutuhkan tambahan


berkas-berkas seperti gambar, Javascripts, CSS, dan lain-lain. Pada
Framework Django berkas tersebut adalah berkas-berkas tetap
(static files).
Untuk mengkonfigurasi static file:
• Pastikan bahwa django.contrib.staticfiles
disertakan dalam INSTALLED_APPS.
• Pastikan list INSTALLED_APPS pada setting.py sudah
dimasukkan semua nama app.
• Pada berkas setting.py tentukan STATIC_URL sebagai
alamat pencarian url file static.
• Tambahkan STATICFILES_DIRS = [
os.path.join(BASE_DIR,"static"),
]
Untuk menentukan direktori yang digunakan saat
melalukan pencarian file static. Pada contoh diatas file
static akan dicari mulai dari base direktori menuju seluruh
folder yang bernama static.
• Buatlah folder static di dalam direktori project dan
masing- masing app. Penggunaan static files sama seperti

P a g e | 22
Web Framework Django Python

template, untuk membedakan file static antar app maka


didalam folder static yang ada di app dibuatlah folder lagi
yang diberi nama sama dengan nama app.
• Buatlah folder untuk menyimpan file static seperti img,
javascript, css, dan file static yang dibutuhkan pada
masing- masing direktori static.
• Masukkan file kedalam direktori sesuai kategori file
• Meload file static kedalam html. meload file static pada
html dilakukan agar semua file static dapat diakses.
Lakukan load dengan cara menambahkan script {% load
static %} pada bagian atas sebelum tag <!DOCTYPE
html>.

Static File menambah Gambar


Menambah file static berupa gambar dapat dilakukan
dengan cara menambahkan gambar pada HTML seperti biasanya
yakni menuliskan tag <img>. Akan tetapi perbedaannya ada pada
pencarian source direktori yang lebih efisien karena sebelumnya
kita sudah melakukan load file static.

Penambahan source (attribute src pada tag img) dapat


dilakukan dengan menggunakan script {% static
“img/namafile.jpg” %}. Saya jelaskan lebih detail mengenai
script tersebut, static dipangil karena sebelumnya sudah kita
deklarasikan bahwa folder utama yang menampung file static baik

P a g e | 23
Web Framework Django Python

pada app maupun pada project keduanya bernama static,


selanjutnya tinggal dimasukkan folder dan nama file source.

<img style ="width:100%" src="{%


static"img/banner_home.png"%}" alt="">

Gambar berhasil dimuat. Saat gambar dibuka di halaman baru


akan terlihat alamat direktori dari gambar.

Static File menambah css


Menambahkan file static css sama seperti file static
gambar yakni dengan menambahkan folder baru bernama css serta
memasukkan file css kedalamnya. File tersebut nantinya juga akan
diload dan digunakan untuk styling halaman.

P a g e | 24
Web Framework Django Python

Jika file css external yang telah dibuat dan dimasukkan


didalam folder static/css, maka langkah selanjutnya adalah
memanggil file tersebut kedalam html seperti pada umumnya dan
melakukan pengalamatan source static seperti yang telah
dicontohkan pada file gambar.

Static File menggunakan bootstrap dan javascripts


Penggunaan template bootstrap juga bisa diaplikasikan
dalam framework django ini. Template bootstrap bisa didapatkan
dengan mendownload di situs resmi bootstrap. Cara memasang
bootstrap cukup mudah.

• Pertama masukkan file bootstrap.css dan bootstrap.js


kedalam folder static/vendor/bootstrap untuk
membedakan file bootstrap hasil download dengan file css
dan js custom.

P a g e | 25
Web Framework Django Python

• Jika kalian memerlukan jquery dan popper yang juga


disediakan oleh bootstrap, maka masukkan jquery dengan
mengunjungi
https://getbootstrap.com/docs/4.5/getting-
started/download/ , pada BootstrapCDN kunjungi link
yang tersedia lalu salin semua script yang ditampilkan di
layar dan simpan script tersebut dengan menggunakan
format .js
• Sama halnya dengan file bootstrap sebelumnya, simpan
file tersebut pada direktori vendor.

P a g e | 26
Web Framework Django Python

• Selanjutnya tinggal memanggil file css, js, jquery dan


pooper external bootstrap tersebut kedalam file html.

Template Inheritance dan Include


Template inheritance dan include adalah lanjutan dari
template yang telah dijelaskan sebelumnya yang lebih praktis
penggunaanya. Memungkinkan pengguna menggunakan satu
template u8ntuk diterapkan pada semua page.

Template include adalah cara memuat suatu template dan


menjadikannya sebagai konteks saat ini atau bisa disebut
memasukkan template lain kedalam template. Penggunaan
template include disini dengan cara memanggil include suatu file
html lain untuk dijadikan bagian dari html yang lain. Hal ini

P a g e | 27
Web Framework Django Python

diperlukan untuk menyimpan bagian-bagian tag html yang


kemungkinan tidak ada lagi perubahan seperti pemanggilan css
bootstrap, javascript, pembuatan navbar dan lain-lain.

Disini saya contohkan pembuatan navbar. Sebelum proses


include, tag nav dimasukkan terlebih dahulu kedalam file html
terpisah dan file html tersebut hanya berisikan navbar. Setelah itu
kita include navbar.html tersebut untuk dijadikan bagian dari suatu
html dengan cara {% include "snippets/navbar.html"
%}.

Fungsi include disini mengambil file dari direktori


templates. Agar tidak tercampur dengan tempate yang lain
disarankan untuk menempatkan file html pecahan tersebut pada
folder khusus.

P a g e | 28
Web Framework Django Python

Template inheritance adalah template warisan yang


memungkinkan untuk membuat template kerangka dasar yang
berisi semua elemen umum situs dan menentukan blok yang dapat
ditimpa (diubah) oleh anak. Untuk membuat sebuah template
inheritance yang harus kita lakukan adalah membuat file html
yang extend kepada file html lainnya.

Pada contoh diatas file index.html extend kepada


base.html. ketika index.html dijalankan maka akan otomatis
menampilkan isi yang sama dengan base.html.

Selain bisa mewarisi isi dari file html lain, template


inheritance juga bisa menimpa (merubah) isi dari file html lain,
sehingga memungkinkan untuk digunakan lagi pada page lain.
Sebelum bisa mengganti isi html lain pastikan dalam html induk
(html yang diextend) sudah dimasukkan block dan end block. Isi
dari block inilah yang akan digunakan untuk mengganti isi html.

Pada contoh di atas base.html block header tidak ada isi


didalamnya. Akan tetapi saat digunakan pada index.html block

P a g e | 29
Web Framework Django Python

header diisikan tag h1 dan p, sehingga saat index.html dijalankan


maka akan menampilkan tag h1 dan p tersebut. Jika block tidak
dilakukan perubahan pada index.html maka yang akan digunakan
adalah isi block default dari base.html.

P a g e | 30
Web Framework Django Python

BAB 5
MODEL DAN DATABASE

P a g e | 31
Web Framework Django Python

BAB 5

MODEL DAN DATABASE

Pengenalan Django Model


Model pada Django adalah class python yang berisikan
sumber informasi tentang berupa bidang-bidang penting dan
perilaku dari suatu data dalam database. Ketika kita memerlukan
suatu data dari database kita akan menggunakan model yang
berupa class python. Model itulah yang nantinya akan berinteraksi
dengan database.

Adapun database yang support dengan Django antara lain :

• SQLite

• MySQL

• PostgreSQL

• ORECLE

Untuk penggunaan database lain seperti MongoDB,


Firebird, SAP SQL dan sebagainya kalian bisa menggunakan
modul tambahan atau 3rd Party-Engine karena Django tidak
mensupportnya secara langsung.

Dalam Django model, kita akan mengenal istilah yang


disebut migration. Migration merupakan mekanisme pada django

P a g e | 32
Web Framework Django Python

untuk mengubah segala perubahan yang terjadi pada model baik


itu penambahan, penghapusan, atau pengeditan model kepada
skema database yang digunakan. Untuk penjelasan lebih lanjut
kita akan menggunakan Django admin sebagai contoh proses
makemigration dan migration.

File yang akan digunakan untuk migration


(makemigration) pada Django admin sebelumnya telah dibuat. Hal
ini bisa dibuktikan dengan menjalankan server anda. Pada line
CMD terdapat peringatan untuk melakukan migrasi agar aplikasi
admin Django dapat digunakan.

Untuk mengunjungi aplikasi admin django, kalian bisa


mengaksesnya pada 127.0.0.1:8000/admin.

Selanjutnya kita jalankan perintah python manage.py


migrate pada CMD untuk melakukan proses migrate. Dengan
berhasilnya proses migrate pada Django admin maka aplikasi
admin sudah bisa dijalankan.

Selanjutnya adalah membuat akun admin atau superuser.


Akun ini yang nantinya digunakan untuk mengatur website

P a g e | 33
Web Framework Django Python

berbasis UI, bisa juga digunakan untuk menambah postingan dan


banyak fitur lainnya. Akun dapat dibuat dengan mengetikkan
perintah manage.py createsuperuser pada CMD. Selanjutnya kita
akan dimintai username, email dan password.

superUser berhasil dibuat.


Setelah akun berhasil dibuat, maka kita bisa menggunakan akun
tersebut untuk masuk pada panel admin dari project django yang
terletak pada http://127.0.0.1:8000/admin/.

Setup MySQL + XAMPP


Disini kita akan menggunakan Database Mysql dengan
XAMPP untuk memudahkan proses instalasi.
1. Install XAMPP
Dengan melakukan instalasi XAMPP maka otomatis

P a g e | 34
Web Framework Django Python

Mysql juga diinstall.


2. Jalankan Apache + mysql

3. Menambahkan path mysql


Buka sistem environment variables

Selanjutnya pilih Environment variables

P a g e | 35
Web Framework Django Python

Klik New untuk membuat path mysql lalu klik ok

4. Restart CMD agar path yang baru ditambahkan dapat


direset (jika sedang membuka CMD).
5. Selanjutnya instal mysql connector dengan cara
menjalankan. pip install mysql-connector-
python pada CMD.

6. Instal wheel dengan cara menjalankan pip install


wheel pada CMD.

7. Setelah wheel diinstall selanjutnya mendownload file


mysqlclient pada

P a g e | 36
Web Framework Django Python

https://www.lfd.uci.edu/~gohlke/pythonlibs/. Sesuaikan
versi pythonnya dengan dua opsi yang disediakan dan
gunakan salah satu yang support dengan python yang
terinstal di PC.

8. Pindahkan hasil download pada file direktori cmd yang


sedang dibuka. Seperti contoh direktori yang dibuka
adalah “C:/Dev/” maka file hasil download tadi
dimasukkan kesana
9. Setelah itu lakukan instalasi mysqlclient.

10. Setelah itu lakukan setting database pada project django


pada file setting.py ubah sqlite3 menjadi mysql dan
masukkan nama database dan keterangan-keterangan
lainnya.

P a g e | 37
Web Framework Django Python

Setelah tutorial diatas berhasil dilakukan jalankan server


django. Database yang sebelumnya sudah dilakukan migrasi
admin(pada tutorial sebelumnya) akan meminta untuk
dimigrasikan lagi. Hal ini menunjukkan bahwa database telah
berhasil diubah.

Membuat Model pada App


Model pada App Django dibuat untuk memudahkan suatu
app dalam mengelolah atau menggunakan databasenya sendiri.
Pada tutorial kali ini saya akan menggunakan contoh app blog dan
akan membuat tabel post pada database.
1. Mendefinisikan class pada models.py yang ada pada app.
Pada app yang dibuat terdapat file python yang digunakan
untuk mengatur model atau membuat model.

P a g e | 38
Web Framework Django Python

Nama class disini mewakili nama tabel yang akan


dibuat. Selanjutnya menambahkan kolom title dan body.
Pada tutorial ini di analogikan membuat tabel yang berisi
postingan pada app blog.
2. Selanjutnya adalah melakukan migrasi pada class yang
telah dibuat (jika menggunakan XAMPP jangan lupa
untuk memulai server apache dan mysql nya).

3. Sesaat setelah make migration berhasil dilakukan maka


python akan membuat file 0001_initial.py. file tersebut
yang nantinya akan digunakan untuk migrasi.

P a g e | 39
Web Framework Django Python

4. Selanjutnya lakukan migrate untuk membuat tabel


kedalam database dengan menjalankan perintah python
manage.py migrate pada CMD.

Untuk melihat apakah tabel behasil dibuat kalian bisa


membuka PHPMyAdmin pada web browser.

Tabel app blog bernama post berhasil dibuat.

P a g e | 40
Web Framework Django Python

Untuk mengelola tabel tersebut salah satunya cara bisa


menggunakan Django admin dengan masuk sebagai superuser dan
mendaftarkan tabel kedalam admin.py

Setelah tabel didaftarkan maka pada Django admin sudah


bisa dilakukan pengelolahan data tabel blog.

Menampilkan Data ke View


Menampilkan data dari tabel database ke view dapat
dilakukan dengan mengimport models pada view dan
menampilkannya pada file html. Berikut contoh detailnya:

P a g e | 41
Web Framework Django Python

1. Import models.py kedalam views


Lakukan import models dengan menuliskan from
.models import Post.

2. Selanjutnya mengambil isi tabel dengan


mengisialisasi variabel yang akan menampung isi
database db = Post.objects.all().

3. Memasukkan variabel tersebut kedalam context dan


menyertakan key-nya.

4. Selanjutnya mengatur file html agar dapat menerima


variabel context.
5. Lalukan pengulangan for agar seluruh isi dari post
dapat diambil.

P a g e | 42
Web Framework Django Python

Data berhasil ditampilkan ke View


Model Field, Tipe Data, Options, Dan Migrasi
Model Django bekerja pada 2 layer yakni bekerja pada
Python layer dan Database layer. Ada beberapa istilah yang perlu
difahami dalam Model Django berikut penjelasan detai mengenai
istilah diatas.
1. ModelField
ModelField pada python layer digunakan untuk
menginisialisasi tipe data dari tabel yang nantinya
akan dibuatkan pada Database saat dilakukan migrasi.
Pada python layer model didalamnya adalah berupa
class python dimana class tersebut mewakili nama
tabel. sedangkan variabel yang didefinisikan
didalamnya mewakili kolom database. Seperti contoh
jika ada sebuah variabel judul = models.charfield()
maka ketika dilakukan migrasi database akan
dibuatkan kolom dengan tipedata char/varchar.

P a g e | 43
Web Framework Django Python

2. Tipedata
Dalam database tentunya tipedata bukanlah suatu
hal yang asing lagi bagi kita. Tipe data menentukan
nilai tipe dari isi suatu kolom. Dalam Django tipedata
database sudah ditentukan melalui class yang telah
dimigrasikan.
3. Options
Melanjutkan keterangan dari Modelfield, option
adalah pemberian sebuah kondisi pada suatu
Modelfield. Modelfield selain untuk penentuan
tipedata suatu kolom database juga untuk memberikan
kondisi pada suatu form yang nantinya digunakan
untuk mengisikan data pada suatu view.seperti contoh
sebuah option dengan keterangan max_length
= 2 title =
models,CharField(max_length=2) maka field
atau form yang digunakan tidak akan bisa dimasuki
lebih dari 2 karakter.
4. Migrasi
Migrasi adalah proses mensinkronisasi antara class
models yang ada pada Django admin dengan database.
Setiap kali ada perubahan pada class maka diharuskan
melakukan migrasi agar tidak ada miss komunikasi.
Ada beberapa hal yang perlu diperhatikan saat

P a g e | 44
Web Framework Django Python

melakukan migrasi. Pada kondisi saat kita


menambahkan sebuah field (kolom) baru pada sebuah
tabel yang sebelumnya Tabel tersebut pada kolom lain
sudah ada isinya maka akan terjadi peringatan tentang
kolom tidak boleh kosong karena default dari Django
adalah notnull. Disana ditawarkan 2 pilihan:
o Pilihan pertama memberikan nilai default
sekarang juga dengan menggunakan fungsi yang
disediakan oleh python seperti contoh
timezone.now

o Keluar dan memberikan nilai default pada option


(defaults=””) atau memperbolehkan nilai null
(blank = True)

Model Object Relasional Mapping dengan Python Shell


ORM (Object relational mapping) adalah objek untuk
menyambungkan query database dengan program yang dipakai.
Pada Django ada ORM sendiri yang bisa digunakan python shell
untuk mengelolah data. Untuk masuk kedalam shell ketikkan
python manage.py shell pada CMD.

P a g e | 45
Web Framework Django Python

Shell adalah interactive consol yang disediakan oleh


python. Shell bisa digunakan untuk menambahkan, menghapus
dan mengupdate data. Sebelum melakukan pengolahan data,
lakukan import model dari suatu app yang didalamnya sudah
dimigrasikan sebuah tabel.

1. Menambahkan data
Untuk menambahkan data mnggunakan shell kita bisa
menuliskan (nama
object).objects.create(namakolom1=”isi”
, namakolom2=”isi”,) lalu tekan enter.

Karena option max_lenght pada kolom title dibuat 2


maka data yang ada didalamnya terpotong.
2. Menghapus data
Dalam menghapus data kita bisa memilih menghapus
suatu baris atau semua data. Untuk menghapus suatu
baris, yang kita lakukan adalah memberikan index

P a g e | 46
Web Framework Django Python

data yang akan dihapus.

Memberikan index juga bisa dimanfaatkan untuk


memanggil data secara spesifik atau juga untuk
keperluan mengupdate data.
Untuk penghapusan data secara keseluruhan,
maka kita tidak perlu menambahkan index
dibelakangnya

3. Update Data
Melakukan update data sama halnya dengan
menghapus data yakni dengan menambahkan index
dibelakangnya.

P a g e | 47
Web Framework Django Python

Slug and Slugify


Slug adalah kolom yang dibuat untuk menampung data
link suatu halaman. Slug bisa dibuat dengan cara menambahkan
field slug pada database.

Slug disini dibuat agar mengacu judul dari suatu halaman.


Karena dia dibuat agar sama dengan judul, maka editable dibuat
false dan blank diperbolehkan.
Untuk mengatur agar slug dapat disimpan setiapkali user
menyimpan, maka di perlukan fungsi untuk menyimpannya. Selain
menyamakan dengan judul, kita perlu melakukan juga
pemformatan slug yang telah disediakan oleh Django dengan cara
import slugify.

Ketika user melakukan saving data maka slug akan


otomatis dibentuk dari judul dengan pemformatan slugify.

P a g e | 48
Web Framework Django Python

BAB 6
MEMBUAT URL

P a g e | 49
Web Framework Django Python

BAB 6

MEMBUAT URL

Membuat URL Dinamis


URL dinamis adalah url yang dapat menerima banyak
parameter dari user dan meresponnya. Dalam pembuatan URL
dinamis disarankan untuk menggunakan re_path() sebagai ganti
dari path. Dalam suatu kasus kita membutuhkan suatu halaman
web yang dapat menerima inputan tahun, bulan, dan tanggal,
dengan menggunakan sintaks dari re_path kita bisa membuat
cakupan yang lebih luas tanpa harus membuat banyak URL.

from django.urls import path, re_path

from . import views

urlpatterns = [

re_path(r'^articles/(?P<year>[0-9]{4})/$',
views.articles),

Pada potongan kode url diatas terdapat pattern untuk


mengakses halaman archive tahun. url archive tahun tersebut
menerima input user berupa angka 0-9 sebanyak 4 digit.
Selanjutnya tinggal melakukan setting agar parameter dapat

P a g e | 50
Web Framework Django Python

diterima oleh views. Pada fungsi articles ditambahkan satu


parameter yang digunakan untuk menerima url user.

from django.http import HttpResponse

def articles(request,year):

year=year

str = year

return HttpResponse(year)

url menggunakan repath berjalan dengan baik


URL Name dan Namespace
URL name adalah penamaan url untuk digunakan dalam
file html yang nantinya akan mempermudah dalam penulisan url.
Sedangkan Namespace adalah penamaan dari url include yang
mengacu pada suatu app. Keduanya digunakan untuk
memudahkan penulisan dalam html.
URL name dituliskan pada urls.py pada project dan pada
app, sedangkan URL Namespace dituliskan hanya pada urls.py
project dan tuliskan nama app pada masing-masing urls.

P a g e | 51
Web Framework Django Python

Setelah name dan namespace dituliskan pada setiap url,


maka pada file html selanjutnya kita cukup menuliskan name dan
namespacenya pada tag h ref tanpa perlu lagi menuliskan url
lengkapnya.

P a g e | 52
Web Framework Django Python

Untuk Url dinamis yang memerlukan parameter tinggal


memasukkan parameter disamping nama yang telah diberikan
dalam tag href.

P a g e | 53
Web Framework Django Python

BAB 7
FORM

P a g e | 54
Web Framework Django Python

BAB 7

FORM

Pengenalan Form
Form pada Django memiliki kelebihan pada keamanan.
Method post tidak bisa dilakukan jika sebelumnya kita belum
memasukkan keamanan Django berupa crfs_token. Csrf token
adalah sebuah serangan yang dipaksakan oleh pengguna agar
backend mengeksekusi perintah yang tidak seharusnya diizinkan.
Oleh karena itu token csrf ini wajib dimasukkan dalam sebuah
form di django agar user yang melakukan methode post adalah
user yang memiliki token. Apabila token csrf tidak dimasukkan
maka user tidak bisa melakukan post pada server.

Pada cmd kita bisa mengetahui bahwa ada 2 proses


didalam interaksi server yakni method get dan post, get adalah
proses dimana meninta data dari server sedangkan post adalah

P a g e | 55
Web Framework Django Python

proses mengirim data ke server. Untuk mengambil data dari post


yang kita lakukan maka kita bisa mengambilnya dari parameter
request yang ada pada fungsi di dalam views.py def
form(request).
Untuk membuktikan bahwa kita bisa mengakses method
post tersebut, masukkan methode kedalam context yang
selanjutnya context tersebut ditampilkan pada halaman web.

Saat tombol kirim ditekan akan mengarah pada fungsi


form yang ada di dalam views.py dan mengirimkan context berupa
data hasil dari methode post untuk ditampilkan pada h2 yang telah
disediakan.

P a g e | 56
Web Framework Django Python

Data pada methode post berhasil ditampilkan


Menggunakan Class Form
Pada tutorial sebelumnya kita masih menggunakan form
manual dengan menuliskan kode HTML. Selanjutnya kita akan
menggunakan class form yang telah disediakan oleh Django.
Penggunaan class form Django membuat penulisan kode pada file
HTML sangat minimalis, yang perlu kita ubah atau lakukan
hanyalah mengotak atik file forms.py yang akan dibuat (bisa juga
kita masukkan class form tersebut kedalam views.py akan tetapi
akan lebih rapi jika kita buatkan file tersendiri). Berikut langkah-
langkah penggunaan class form Django:
1. Buat file baru bernama forms.py
2. Pada file tersebut import library yang disediakan oleh
Django yakni from django import forms

P a g e | 57
Web Framework Django Python

3. Buatlah class dengan memasukkan nama class dan


diinherit dari form yang telah diimport sebelumnya.
class nameclass(forms.Form):
4. Selanjutnya masukkan nama field atau inputan yang
akan digunakan, penggunaan field form disini hampir
mirip dengan fieldModels yang kita buat pada tutorial
sebelumnya. nama = forms.CharField()
5. Kita sudah selesai pada file forms.py selanjutnya
melakukan setting pada views.py. Pada views.py kita
perlu mengimport forms agar dapat digunakan oleh
views. from . import forms
6. Selanjutnya panggil class yang ada pada forms.py
(classform = form.namaclass()) dan
masukkan pada context untuk dimasukkan pada
HTML. Context={‘classform’:classform}
7. Untuk penggunaan class form pada HTML kita
tinggal memasukkan context seperti pada umumnya.
{{classform}}
8. Context classform pada HTML diletakkan diantara
tag form serta jangan lupa untuk menambahkan csrf
token dan tombol submit didalamnya.
9. Karena form yang ditampilkan menjadi lurus(tidak
ada enter pada setiap inputan) maka kita bisa
menambahkan tag table dan memasukkan tag

P a g e | 58
Web Framework Django Python

classform didalamnya serta jangan lupa


menambahkan as_table didalamnya menjadi
{{classform.as_table}}

Form Field dan Option


Formfield pada Django memiliki banyak tipe mulai dari
integerField() BooleanField() dan lain-lain. Berikut daftar dari
Form field Django:

1. forms.DecimalField()
field form untuk inputan number
2. forms.FloatField()
field form untuk inputan number
3. forms.BooleanField()
field form ini akan menampilkan checkbox yang
mengembalikan nilai true false
4. forms.CharField()
field form untuk inputan text

P a g e | 59
Web Framework Django Python

5. forms.EmailField()
field form untuk email
6. forms.RegexField()
field form untuk regular Expression
7. forms.SlugField()
field untuk mengisikan Slug
8. forms.URLField()
field form untuk mengisikan URL
9. forms.GenericIPAddressField()
field form untuk IP Address
10. forms.ChoicheField()
field form untuk menampilkan pilihan. Untuk
menambahkan pilihan kita inisialisasikan tuple untuk
dimasukkan kedalam option choices.
Pilihan((nilai1,pilihan1),
(nilai2,pilihan2)) pilih =
forms.ChoiceField(choices=pilihan)
11. forms.MultipleChoiceField()
field form yang juga memerlukan choices
12. forms.TypeMultipleChoiceField()
field form ini juga memerlukan choices
13. forms.NullBooleanField()
Digunakan ketika membutuhkan kondisi null pada
true dan false

P a g e | 60
Web Framework Django Python

14. forms.DateField()
form field format tanggal
15. forms.DateTimeField()
form field tanggal dan waktu
16. forms.DurationField()
field form untuk durasi
17. forms.TimeField()
field form untuk waktu
18. forms.SplitDateTimeField()
field form untuk memasukkan 2 buah inputan
datetime
19. forms.FileField()
form field untuk memasukkan file
20. forms.ImageField()
form untuk memasukkan gambar

Options pada field digunakan untuk mengatur perilaku dari field


tersebut. Perlu diketahui bahwa default required class form
Django adalah true jadi untuk membuatnya nullable maka kita
masukkan option required =
False.forms.CharField(required=False)

Widget Form
Pada sebuah tag input terdapat attribut type. Attribute type
pada django ini diatur oleh Widget, saat kita tidak memasukkan

P a g e | 61
Web Framework Django Python

option Widget pada suatu Field maka yang digunakan oleh Django
adalah default widget. Seperti contoh kita hendak membuat text
area dengan menggunakan CharField. Kita hanya perlu mengubah
widget atau menginisialisasikan widget pada option charField.
Komentar = forms.CharField(widget =
forms.Textarea, max_length = 100, required =
False)

Komentar yang semula text inputan baris menjadi text area

Menambahkan Attribute pada Komponen Form


Pada form yang dihasilkan oleh Django tentunya akan
sulit untuk mengakses attibute serta menambahkan class untuk
keperluan Layouting. Berikut adalah cara-cara untuk mengakses
komponen class form django dan memecahnya menjadi beberapa
bagian pada HTML.

1. Mengambil salah satu komponen input class form


Mengambil komponen input bisa dilakukan dengan
cara {{classform.namac}} saat kita mengetikkan
juga nama inputan dibelakangnya maka yang
ditampilkan tidak lagi seluruh komponen melainkan
hanya 1 komponen tersebut. Ada sesuatu yang perlu

P a g e | 62
Web Framework Django Python

diperhatikan bahwa ketika kita mengakses hanya


nama inputan tersebut maka label dari inputan itu
tidak ikut ditampilkan maka dari itu perlu di ketikkan
lagi untuk mengambil serta label_tag dari komponen
tersebut. {{classform.namac.label_tag}}

2. Mengubah default Label


Saat nilai label tidak kita ubah maka label akan
mengikuti nama dari komponen tersebut. Untuk
mengubahnya tambahkan option pada komponen
form tersebut. namac=forms.CharField(label
= “Nama Lengkap”).
3. Menambahkan attributes
Pada suatu tag tentunya kita membutuhkan suatu
attributes seperti placeholder, class dan sebagainya.
Penambahan attributes ini bisa dilakukan dengan
memasukkan apa yang ingin ditambahkan kedalam
option widget.

P a g e | 63
Web Framework Django Python

Menyimpan data form ke database/model


Menyimpan data form ke database bisa dilakukan dengan
menangkap methode post yang terdapat pada request. Berikut
langkah-langkah insert data dari form.

1. Menyiapkan database, model dan form


2. Menyamakan form dengan database
Samakan input form dengan kolom yang ada dalam database agar
tidak ada kekeliruan baik dari tipedata maupun panjang input.

3. Mengimport model

P a g e | 64
Web Framework Django Python

Lakukan inisialisasi import dengan mengetikkan


from blog.models import (nama class
model) karena model yang saya gunakan berada
pada app lain maka saya mengimportnya dari app
tersebut jika model berada pada satu app maka cukup
from .models import (nama class model)
4. Menangkap methode post dan melakukan insert
Proses ini dilakukan pada views dimana
request.POST diambil nilainya pada masing-masing
input kolom sekaligus menginsertkannya.

Post.objects.create Post disini adalah nama


dari Class model yang ada pada blog/models.py

P a g e | 65
Web Framework Django Python

BAB 8
CRUD

P a g e | 66
Web Framework Django Python

BAB 8

CRUD

Validasi Form
Validasi form diperlukan untuk membatasi inputanuser agar
sesuai dengan ketentuan. Validasi selain dari jumlah yang
diinputkan, kita juga bisa membatasi apa yang dimasukkan user.

1. Mencocokkan langsung dengan form


Kita juga bisa langsung mengambil request dan
mencocokkan dengan requirement yang ada pada form.
classform forms.classform(request.POST or
None) kemudian memberikan kondisi lagi apakah form
sudah valid, jika sudah valid barulah data dimasukkan
kedalam database.

2. Mencocokkan apa yang dimasukkan user pada masing-


masing inputan.
Inputan user bisa diakses dari dalam file forms.py dan
mengembalikan nilai error jika inputan tersebut
melanggar aturan yang telah dibuat.

P a g e | 67
Web Framework Django Python

Model Form
Model Form adalah class yang disediakan oleh Django
untuk mempersingkat atau menggabungkan model dengan form.
Pada penulisan form yang lalu kita diharuskan menuliskan
forms.CharField() untuk Model form kita tidak lagi menuliskan
kode tersebut, karena sejatinya penulisan model dan form adalah
hal yang sama. Berikut adalah langkah-langkah penulisan model
form.

1. Menyiapkan database dan model


2. Melakukan import models kedalam file forms.py

3. Membuat class form dan menentukan field mana yang


akan dimasukkan kedalam form.

P a g e | 68
Web Framework Django Python

Saat form sudah diubah kedalam modelform maka kita


sudah tidak perlu lagi membuat script insert data cukup
menuliskan classform.save()

Model form validators


Model form validators adalah metode pengecekan yang
digunakan untuk memvalidasi model form validator agar sesuai
dengan ketentuan yang telah ditetapkan. Pada dasarnya model
form validator dijalankan pada models.py akan tetapi agar models
lebih terlihat rapi, maka disarankan untuk meletakkannya pada file
terpisah. Berikut adalah langkah-langkah membuat validator
untuk model form:

1. Membuat file baru validators.py


2. Mengimport from Django.core.exceptions
import ValidationError pada validators.py
3. Membuat fungsi validasi untuk dijalankan pada
sebuah form field. Disini saya contohkan dengan
membuat validasi field judul dimana user tidak bisa
menginputkan kata Root.

P a g e | 69
Web Framework Django Python

4. Mengimport validations.py kedalam models dan


menambahkan option validation kedalam tabel yang
diinginkan. Option validation berupa sebuah list, hal
ini menunjukkan bahwa sebuah Models bisa
diberikan lebih dari 1 validator

Menambahkan Attribute pada tag model Form


Sama halnya dengan Form, Model form juga sulit untuk
menambahkan attribut pada tag input yang seharusnya mudah
diakses. Berbeda dengan form yang sebelumnya terdapat Options,
Model form tidak memilikinya oleh sebab itu untuk menambahkan

P a g e | 70
Web Framework Django Python

attribut langsung saja kita buat sebuah dictionary bernama widgets


yang didalamnya diisikan attribute yang ingin digunakan.

Placeholder berhasil ditambahkan

Untuk mengambil salah satu komponen pada class


classform caranya masih sama dengan form yang telah dijelaskan
sebelumnya.

Field menambahkan data

P a g e | 71
Web Framework Django Python

Delete Data pada Form


Pada pengolahan suatu data tentunya kita membutuhkan
untuk menghapus data. Oleh karena itu pada tutorial Django ini
kita akan membuat sebuah aplikasi sederhana untuk menghapus
data.

1. Buat sebuah fungsi pada views.py yang akan menjadi


rujukan link delete.

Post object diatas adalah class yang ada di dalam


models.py. object tersebut melakukan sebuah perintah
sql mendelete berdasarkan id dari parameter fungsi
delete. Parameter tersebut didapatkan dari url yang
dikunjungi oleh user. Setelah delete berhasil
dilakukan maka dikembalikan pada page blog.
2. Buatlah referensi link yang digunakan untuk
mengarahkan user kepada fungsi yang telah dibuat
diatas.

P a g e | 72
Web Framework Django Python

Link tersebut menerima input angka 0-9 dengan nama


link delete

3. Buatlah halaman untuk menampilkan daftar tabel dari


database beserta tombol yang akan digunakan untuk
menghapus data pada masing-masing baris.

P a g e | 73
Web Framework Django Python

Tampilan data sebelum di hapus

Tampilan data setelah di hapus

Update Data pada Form


Selain menghapus data kita juga perlu untuk dapat
mengupdate data pada database menggunakan tombol yang dibuat
pada suatu halaman web. Proses update pada Django memiliki
kesamaan dengan create dari segi penggunaan form hingga proses
penyimpanan data kedalam database. Akan tetapi ada perbedaan
yang bisa membuat sistem mengenali bahwa keadaan tersebut

P a g e | 74
Web Framework Django Python

adalah sebuah Update data. Perbedaan tersebut terletak pada


penginisialisasian variabel form yang didalamnya disertakan data
yang ingin di update. Untuk selengkapnya kita fahami baris kode
dibawah ini:

Views.py menjadi rujukan dari link update dengan


membawa suatu id yang akan dijadikan sebagai acuan untuk
melakukan update. Pada class model form didalamnya
ditambahkan initial untuk mengisikan data pada form update dan
instance untuk menyatakan id yang akan diupdate.

Selanjutnya tinggal mengecek apakah method yang ada


pada request adalah methode post. Jika benar methode post maka
selanjutnya mengecek apakah modelform sudah valid. Jika sudah
valid maka modelform akan disimpan dan di redirect kembali pada
halaman yang menampilkan tabel data.

P a g e | 75
Web Framework Django Python

Field untuk mengupdate data

P a g e | 76
Web Framework Django Python

Tampilan data sebelum di update

Tampilan data setelah di update

P a g e | 77
Web Framework Django Python

BAB 9
CLASS BASED VIEWS

P a g e | 78
Web Framework Django Python

BAB 9

CLASS BASED VIEWS

Template Views (Class based views)


Class based views adalah suatu view berbasis class yang
telah disediakan oleh Django. Dengan penggunakan class views
kita bisa mempermudah dalam pembuatan views.

1. Class based views untuk menangkap request


Import class dari Django from django.views import View
kedalam file views.py. dalam class tersebut telah
disediakan methode-methode seperti post dan get untuk
memudahkan dalam membedakan request yang sedang
dilakukan dan baris kode mana yang akan dilakukan pada
masing-masing baris code. Berikut contoh class based
views untuk membedakan post dan get.

P a g e | 79
Web Framework Django Python

Dengan dibuatnya pembeda maka akan memudahkan kita


dalam menuliskan baris code pada masing-masing request.
Penulisan views pada url terdapat sedikit perubahan yakni dengan
menambahkan .as_views dibelakang nama class-nya

2. Menggunakan lagi class based view untuk banyak url


Kita bisa menggunakan ulang class view untuk url lain
dengan memberikan parameter template seperti
contoh:

Kosongkan variabel template_name pada classview agar bisa


digunakan berulang ulang.

Dengan menggunakan template lain kita sudah bisa membuat


page baru tanpa harus membuat function based views lagi.

P a g e | 80
Web Framework Django Python

BAB 10
USER MANAGEMENT

P a g e | 81
Web Framework Django Python

BAB 10

USER MANAGEMENT

User Management

User management pada Django berupa auth sistem


dimana auth sistem dibagi menjadi Authentication dan
Autorization. Gabungan dari Autentikasi dan Autorisasi akan
menghasilkan group management. Jadi group management adalah
sekumpulan user yang memiliki kesamaan akses.

Pada Authentification terdapat Usetype berupa


Anonymous dan user (yang memerlukan poses login). User dibagi
menjadi 3 status yakni Superuser, staff, dan Active. Adapun akun
yang dapat mengakses Django Admin adalah akun yang memiliki
status Superuser dan staff. Selain akses Django admin, akses pada
suatu tabel juga diperlukan agar suatu user dapat menggunakan
tabel tersebut. Misal pada Django admin terdapat Tabel akun, jika

P a g e | 82
Web Framework Django Python

sebuah akun staff tidak memiliki izin akses pada tabel tersebut,
maka staff tidak bisa mengakses tabel tersebut.

Authentication User, Login dan Logout


Pada web Django User yang tidak dapat mengakses
Django admin maka harus dibuatkan Authentifikasi login sendiri
dengan membuatkan form login terpisah diluar Django admin.
Untuk lebih jelas dalam pengenalan login kita lihat potongan code
berikut:

Pada saat methode = post, maka data user username dan


pasword akan dilakukan authenticate dengan methode yang telah
disediakan oleh django. Untuk menggunakan methode tersebut
lakukan import dari django.contrib.auth from
Django.contrib.auth import authenticate, login,
lout. Ketika user autentikasi tidak none maka proses log in
dilakukan jika autentikasi none maka akan dilempar lagi pada
halaman login.

P a g e | 83
Web Framework Django Python

Untuk logout Django juga sudah menyediakan


methodenya.berikut contoh implementasi logout.

Methode logout dipanggil dengan memasukkan request.


Maka secara otomatis session dan user yang ada didalam request
akan dinonaktifkan.

Pengenalan User Permition Check


Pada permition check (pengecekan apakah sudah login)
kita bisa menggunakan user.is_authentichated(). Untuk lebih
detailnya kita bisa lihat source kode dibawah ini:

P a g e | 84
Web Framework Django Python

Saat ada user yang mengunjungi login, akan diperiksa


authentikasinya apakah user terauthentikasi atau belum, jika sudah
maka akan diredirect ke index.

User permitions bisa dilakukan dengan cara lain yakni


masking function views. Suatu masking views diberikan decorator
berupa @login_required. Jadi ketika user tidak dalam keadaan
login maka akan ada pesan error berupa link tidak ditemukan.
Untuk menggunakannya kita harus import decorator terlebih
dahulu from django.contrib.auth.decorators import
login_required. Berikut contoh penggunaannya.

P a g e | 85
Web Framework Django Python

User yang mengunjungi logout akan diperiksa apakah


user sudah login. Jika sudah login maka akan diberikan akses
untuk membuka view tersebut, jika belum login maka error page
not found akan ditampilkan.

User and Group Permition Test


Group permitions dapat diimplementasikan dalam sebuah
web. Sebelum itu, untuk membuat sebuah grup permitions kita
bisa mengunjungi Django Admin.

Untuk melakukan permitions grup kita bisa


melakukannya dengan mengecek group user apakah sama dengan

P a g e | 86
Web Framework Django Python

group yang diizinkan. Tapi sebelum itu kita harus import dulu data
dari tabel group from django.contrib.auth.models
import Group untuk penjelasan detailnya kita lihat contoh
dibawah ini :

Disini kita ambil nama group permitions yang ingin diberi


akses. Selanjutnya dicek apakah user memiliki group tersebut.

Selanjutnya pengecekan juga bisa dilakukan dengan


decorator yang membutuhkan nilai Boolean. Nilai boolean
tersebut yang akan dijadikan acuan apakah user diperbolehkan
masuk suatu deff view atau tidak. Jangan lupa untuk import
decorator berupa decorator user_passes_test from
django.contrib.auth.decorators import
user_passes_test

P a g e | 87
Web Framework Django Python

Deff checkpenulis akan mengembalikan nilai boolean


yang akan digunakan untuk mengecek user_passes_test pada
function artikel addview. Atau kita juga bisa memberikan
checking langsung pada @user_passes_test dengan menggunakan
lambda.

Selain untuk pengecekan gruop user_passes_test bisa


digunakan untuk checking username.

P a g e | 88
Web Framework Django Python

DAFTAR PUSTAKA

1. Holovaty, A., & Willison, S. (2020, September 1).


https://en.wikipedia.org/wiki/. Retrieved from Wikipedia:

https://en.wikipedia.org/wiki/Django_(web_framework)
diakses 12 November 2020.

2. Saputra, D., & Aji, R. F. (2018). Analisis Perbandingan


Performa Web Service Rest Menggunakan Framework
Laravel, Django, Dan Ruby on Rails Untuk Akses Data
Dengan Aplikasi Mobile. Bangkit Indonesia, 17 - 22
diakses 12 November 2020.

3. Academic.edu. Pemrograman dan Bahasa Pemrograman.


Diakses pada 12 November 2020, dari
https://www.academia.edu/34826332/PEMROGRAM
AN_DAN_BAHASA_PEMROGRAMAN
4. Codepolitan.com. situs-situs popular yang dibuat dengan
Django. Diakses 12 November 2020, dari
https://www.codepolitan.com/situs-situs-populer-
yang-dibuat-dengan-django
5. Erlangga.blogspot.com. program input bilangan prima di
python.html. Diakses 12 November 2020, dari
https://erlanggaprian.blogspot.com/2016/10/progam-
input-bilangan-prima-di-pyhton.html

P a g e | 89
Web Framework Django Python

6. Okutasan.web.id. Django-1. Diakses 12 November 2020,


dari https://okutasan.web.id/post/django-1/
7. docs.djangoproject.com. Django Documentation |
Django. Diakses pada 12 November 2020, dari
https://docs.djangoproject.com/en/3.0/contents/
8. Youtube.com, Kelas Terbuka | Tutorial Django 1.11 LTS
Bahasa Indonesia. Diakses pada 12 November 2020, dari
https://www.youtube.com/playlist?list=PLZS-
MHyEIRo6p_RwsWntxMO5QAqIHHHld

P a g e | 90

Anda mungkin juga menyukai