Unchaining Django - Part 1
Pada tulisan kali ini, saya akan berbagi ilmu mengenai Django, yaitu framework web berbasis Python. Saya berasumsi bahwa kamu semua telah menginstall Django via virtualenv sebelumnya. Bagi kamu yang belum menginstall Django, silakan ikuti tutorial instalasi Django disini terlebih dahulu sebelum mengikuti tutorial ini.
Melalui serial tutorial ini, kita akan membuat sebuah aplikasi polling sederhana yang memiliki fitur :
- Melihat polling dan memberikan vote pada polling tersebut.
- Admin yang dapat membuat, mengedit dan menghapus polling.
Outline
Yang dibahas pada tutorial ini adalah:
- Membuat projek Django.
- Membuat
apps
pada projek Django.
Membuat projek baru
Buka terminal/command line kamu, cd
ke direktori virtualenv yang pernah kamu buat saat mengikuti tutorial instalasi. Setelah itu jalankan perintah berikut:
$ python .\Scripts\django-admin.py startproject mysite
Perintah ini akan membuat folder mysite
pada direktori kamu saat ini. Struktur dari projek mysite
akan terlihat seperti dibawah ini:
mysite/
manage.py
mysite/
__init__.py
setting.py
urls.py
wsgi.py
Berikut penjelasan rincinya:
- Folder
mysite
yang paling luar hanya merupakan kontainer untuk projek kamu. Anda dapat me-rename folder tsb. sesuai keinginan kamu. - manage.py: Sebuah script command-line yang memungkinkan kamu untuk berinteraksi dengan projek Django dengan berbagai cara.
- Folder
mysite
yang di dalam adalah projek Django kamu sebenarnya yang terdiri dari beberapa script Python. mysite/__init__.py
: File kosong yang berfungsi untuk menkamui direktori ini agar dikenali sebagai sebuah package oleh Python.mysite/settings.py
: Konfigurasi untuk projek Django.mysite/urls.py
: Deklarasi url untuk projek Django. Bisa juga dianggap sebagai ‘Daftar Isi’nya projek Django.mysite/wsgi.py
: Sebuah entry-point untuk mengecek kompabilitas WSGI pada server kamu.
Konfigurasi Database
Buka mysite/setting.py
pada teks editor kamu. Secara default, Django menggunakan SQLite sebagai database. Untuk serial tutorial ini database yang digunakan adalah SQLite.
Apabila kamu ingin menggunakan database lain, kamu perlu menginstall plugin tambahan dan mengubah konfigurasi DATABASE
sesuai dengan konfigurasi koneksi database yang digunakan. Detil konfigurasinya dapat kamu lihat pada dokumentasi DATABASE
. Untuk saat ini kamu hanya perlu mengedit TIMEZONE
sesuai dengan zona waktu wilayah kamu, misal
Asia/Jakarta
(daftar zona waktu dapat dilihat disini).
Perhatikan konfigurasi INSTALLED_APPS
. Konfigurasi tersebut berisikan nama semua apps Django yang telah aktif pada projek kamu. Apps dapat digunakan pada banyak projek, dan kamu dapat mendistribusikannya untuk projek orang lain.
Secara default, INSTALLED_APPS
terdiri dari:
django.contrib.admin
- Aplikasi admin, akan digunakan pada tutorial selanjutnya.django.contrib.auth
- Sistem otentikasi.django.contrib.contenttypes
- Framework untuk tipe konten.django.contrib.sessions
- Sistem session.django.contrib.messages
- Sistem perpesanan.django.contrib.staticfiles
- Framework untuk mengelola fail statis.
Beberapa dari aplikasi tsb. memerlukan sedikitnya satu tabel, sehingga kita perlu membuat tabel pada database sebelum dapat menggunakannya. Untuk membuatnya, jalankan perintah dibawah ini:
python manage.py migrate
Perintah migrate
akan mencari konfigurasi INSTALLED_APPS
dan membuat tabel yang dibutuhkan menurut konfigurasi database pada mysite/settings.py
.
Menjalankan server
cd
ke root dari direktori mysite
, lalu jalankan perintah berikut:
python manage.py runserver
Output-nya akan terlihat seperti dibawah ini:
Performing system checks...
0 errors found
September 22, 2014 - 15:50:53
Django version 1.7, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Setelah server berhasil dijalankan, buka http://127.0.0.1:8000/
pada browser kamu. Anda akan melihat halaman ‘Welcome to Django’. Untuk mengganti port dan IP, jalankan perintah berikut:
python manage.py runserver 0.0.0.0:8000
Membuat model
Untuk membuat apps, terlebih dahulu kita buat modelnya. Pastikan kamu berada pada direktori yang sama dengan manage.py
dan jalankan perintah berikut:
$ python manage.py startapp polls
Perintah tersebut akan membuat direktori polls
yang memiliki struktur seperti di bawah ini:
polls/
__init__.py
admin.py
migrations/
__init__.py
models.py
tests.py
views.py
Kita akan membuat dua model: Question
dan Choice
. Question
terdiri atas dua field, yaitu question dan publication date. Sedangkan Choice
terdiri atas text of choice dan vote. Setiap Choice
memiliki relasi dengan sebuah Question
. Konsep tersebut direpresentasikan dengan class. Edit polls/models.py
sehingga terlihat seperti di bawah ini:
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
Setiap field direpresentasikan oleh sebuah class Field
, misal CharField
untuk field dengan tipe data char
dan DateTimeField
untuk field dengan tipe data datetime
. Beberapa field membutuhkan argumen tertentu. Sebagai contoh, CharField
membutuhkan argumen berupa nilai max_length
. Hal ini bukan sekedar digunakan pada skema database saja, melainkan juga sebagai validasi.
Perhatikan bahwa relasi antara Question
dan Choice
dideklarasikan dengan menggunakan ForeignKey
. Hal ini menjelaskan bahwa setiap Choice
memiliki relasi dengan satu Question
. Django mendukung semua relasi database yang umum seperti many-to-many dan one-to-one.
Mengaktifkan Model
Edit mysite/settings.py
, dan ubah konfigurasi INSTALLED_APPS
untuk memasukan polls
seperti di bawah ini:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls',
)
Setelah itu jalankan perintah di bawah ini:
python manage.py makemigrations polls
Output-nya akan terlihat seperti di bawah ini:
Migrations for ’polls’:
0001_initial.py:
- Create model Question
- Create model Choice
- Add field question to choice
Dengan menjalankan perintah di atas, kamu telah memberitahu Django bahwa kamu telah membuat beberapa perubahan pada model kamu dan kamu ingin perubahan tsb. disimpan sebagai migration. Untuk melihat seperti apa perintah SQL yang dijalankan oleh Django, jalankan perintah berikut:
python manage.py sqlmigrate polls 0001
Sekarang jalankan kembali migrate
untuk membuat tabel yang sesungguhnya pada database:
python manage.py migrate
Menggunakan API
Untuk mengaktifkan shell
Python, gunakan perintah berikut:
python manage.py shell
Setelah itu eksplor database API :
Credit
Sebenarnya tutorial ini bukan buatan saya, melainkan saya hanya membantu menerjemahkan dari tutorial aslinya di djangoproject.com yang berbahasa Inggris (tentunya sambil saya ikuti juga tutorialnya). Bagi yang tidak punya waktu untuk menunggu versi Bahasa Indonesianya muncul di situs ini silakan kunjungi situs sumbernya.