Tutorial django framework untuk pemula - There’s will be the hard way before the easy way.
Tutorial ini ditargetkan untuk pemula (yang baru ingin mempelajari Django) dan telah mengerti dasar-dasar Python.
Pada tutorial kali ini kita akan membuat blog app sederhana dengan Django 4.1
Tanpa basa basi, let’s get started…
Langkah pertama sebelum kita membuat sebuah web / aplikasi dengan django, kita harus memiliki Virtual Environment dalam pc / laptop / komputer kita.
NOTE: khusus untuk pengguna Windows, disarankan untuk menggunakan bash for windows.
# buat sebuah direktori baru untuk project django kita.
$ mkdir tutor
# masuk ke direktori yang baru saja kita buat.
$ cd tutor
# buatlah virtual environment di dalamnya.
$ python -m venv env
# buatlah file baru bernama requirements.txt di dalam folder "django-blog"
$ touch requirements.txt
# aktifkan virtual environment
$ source env/bin/activate
# install django
(env) tutor $ pip install django
# update dependencies kita pada requirements.txt
(env) tutor $ pip freeze > requirements.txt
Pada langkah pertama tersebut, kita telah berhasil menginstall django, langkah selanjutnya adalah membuat project pada direktori tutor
yang telah kita buat.
Setelah kita berhasil menginstallnya di atas, langkah selanjutnya kita akan langsung membuat sebuah project.
# membuat django project
(env) tutor $ django-admin startproject django_blog
# jika kita periksa lagi, maka akan muncul folder project yang baru saja kita buat.
(env) tutor $ ls
django_blog env requirements.txt
# masuklah ke dalam folder django_blog tersebut
(env) tutor $ cd django_blog
# jika kita periksa pada direktori "django_blog", maka kita akan memiliki file manage.py di dalamnya.
(env) tutor/django_blog $ ls
django_blog manage.py
# jalankan django server
(env) tutor/django_blog $ ./manage.py runserver
# atau
(env) tutor/django_blog $ python manage.py runserver
# Output
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
September 19, 2019 - 16:07:39
Django version 2.2.5, using settings 'django_blog.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Dari hasil output di atas, maka sudah dipastikan kita telah berhasil menginstall dan menjalankan django pada local server kita.
Jika kita mengetikkan localhost:8000
atau 127.0.0.1:8000
pada browser kesayangan, maka akan muncul welcome page khas django yang sangat indah. isn’t it?
Pada dasarnya, django hanya memiliki 1 project / main project yang kita beri nama django_blog
.
pada folder django_blog
sendiri memiliki beberapa file di antaranya:
__init__.py
: untuk memberitahu django jika kita dapat mengimport nama project kita sebagai package / module.settings.py
: berisi semua setting yang ada pada project & aplikasi kita.urls.py
: url mapping / main url pada django.wsgi.py
: Web Server Gateway Interface, digunakan pada saat project kita telah siap untuk go live / production.Secara default, project structure pada django akan terlihat seperti berikut ini:
tutor/
│
├── django_blog/
│ ├── django_blog/
│ │ ├── __init__.py
│ │ ├── settings.py
│ │ ├── urls.py
│ │ └── wsgi.py
│ │
│ └── manage.py
│
└── env/
Untuk itu kita akan membuat sedikit perubahan / modifikasi agar mempermudah kita dalam berpindah directory.
# memindahkan file manage.py dari sub direktori ke direktori utama (tutor)
(env) tutor $ mv django_blog/manage.py ./
#memindahkan sub direktori "django_blog" ke direktori utama (tutor)
(env) tutor $ mv django_blog/django_blog/* django_blog
# menghapus folder kosong yang ada pada "django_blog" di dalam sub direktori "django_blog"
(env) tutor $ rm -r django_blog/django_blog/
Setelah kita pindahkan / merubah struktur project kita di atas, maka kita struktur project baru kita akan terlihat seperti berikut:
tutor/
│
├── django_blog/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
│
├── env/
│
└── manage.py
Dari struktur di baru yang telah kita buat, akan jauh lebih memudahkan dalam membaca project kita.
Terlebih jika kita telah memiliki banyak aplikasi di dalamnya.
Selanjutnya kita akan membuat sebuah app
# membuat app pada django
(env) tutor $ django-admin startapp home
List file & folder baru kita akan terlihat seperti berikut init:
#list
(env) tutor $ ls
tutor/
│
├── django_blog/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
│
├── env/
│
├── home
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
│
└── manage.py
Kita telah melakukan generate sebuah app baru bernama home
.
Dalam home app tersebut, terdapat beberapa file:
admin.py
: Konfigurasi untuk dashboard / admin.apps.py
: File berisi nama aplikasi kita HomeConfig(AppConfig)
.__init__.py
: Memberitahukan kepada django agar kita dapat menggunakannya sebagai package.migrations
: Berisi skema database yang kita gunakan setelah melakukan migrate
.models.py
: Berisi class
yang akan digunakan django untuk membuat database table.tests.py
: Untuk melakukan unit testing pada aplikasi kita (bug killing).views.py
: Untuk mengatur tampilan yang akan kita tampilkan pada template.Setelah kita membuat aplikasi, jangan lupa untuk mengupdate file settings.py
kita pada django_blog/settings.py
.
# update file settings.py
# karena di sini kita menggunakan bash, maka kita bisa menggunakan nano (Unix Text Editor) sebagai text editornya.
(env) tutor & nano django_blog/settings.py
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'home', # Aplikasi home yang baru saja kita buat.
]
Views
.Buka file views.py
pada aplikasi (folder)home
kita.
from django.shortcuts import render
# Create your views here.
def homeIndex(request):
return render(request, 'home.html')
Sangat sederhana bukan?
Pada baris kode di atas, kita membuat sebuah function view
bernama homeIndex
yang akan merender template kita home.html
ketika function tersebut di panggil.
# membuat folder templates di dalam folder django_blog.
(env) tutor $ mkdir/django_blog/templates
# membuat file home.html di dalam folder templates
(env) tutor $ touch /django_blog/templates/home.html
Dalam file home.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Learn Django</title>
</head>
<body>
<h1>Welcome to my first site made with Django</h1>
</body>
</html>
Edit file bernama urls.py
di dalam folder django_blog
from django.contrib import admin
from django.urls import path, include
from home import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('home.urls')),
]
Langkah selanjutnya, buatlah file bernama urls.py
di dalam home
app:
from django.urls import path
from home import views
urlpatterns = [
path('', views.homeIndex, name='homeIndex'),
]
Pada django, kita dapat menentukan base direktori template yang akan kita gunakan.
Pada tutorial ini kita akan meletakkannya pada direktori project kita yaitu django_blog
.
Edit file settings.py
seperti berikut:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# menentukan path directory untuk template yang ingin kita gunakan.
'DIRS': [os.path.join(BASE_DIR, 'django_blog/templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
And that’s it, jalankan server ./manage.py runserver
dan coba jalankan localhost:8000
pada browser kita, maka kita akan melihat hasilnya seperti di bawah ini:
Pada tutorial kali ini kita telah berhasil melakukan kontrol pada views dan template, selanjutnya kita akan mencoba menggunakan static
assets pada django (JavaScript
, CSS
, and more), untuk membuat tampilan lebih responsive dan sedap dipandang.