#5 Mendeploy Django di Docker (Part 2)

#5 Mendeploy Django di Docker (Part 2)

Part 2

Selanjutnya, kita akan membuat aplikasi django untuk menampilkan tulisan ‘Hello Word’ di browser menggunakan httpresponse.

Ikuti langkah-langkah berikut:

  1. Sekarang kita akan buat aplikasi sederhana menampilkan tulisan Hello World dalam sebuah page bernama pages.
(djangoku-wI74BJPd) D:\djangoku>python manage.py startapp pages

Cek struktur folder/file:

(djangoku-wI74BJPd) D:\djangoku>tree /f
Folder PATH listing
Volume serial number is 8CAE-FCC6
D:.
│   db.sqlite3
│   manage.py
│   Pipfile
│   Pipfile.lock
│
├───config
│       asgi.py
│       settings.py
│       urls.py
│       wsgi.py
│       __init__.py
│
└───pages
    │   admin.py
    │   apps.py
    │   models.py
    │   tests.py
    │   views.py
    │   __init__.py
    │
    └───migrations
            __init__.py

Oke sudah terbuat aplikasi pages, tinggal kita melakukan configurasi.

  1. Mari kita masuk ke code editor vscode.
(djangoku-wI74BJPd) D:\djangoku>code .

Maka akan terbuka tampilan vscode, kemudian buat terminal baru dengan perintah çtrl+shift+P, dan pilih Terminal: Create New Terminal (With Profile). Nanti akan muncul muncul terminal cmd dengan profile environment .

  1. Daftarkan aplikasi pages di setting.py. Buka file setting.py dan daftarkan aplikasi pages.
# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'pages', #tambahkan pages
]
  1. Buka file urls.py di folder config (folder project django). Ini disebut juga dengan URL utama. Tambahkan fungsi include pada modul django.urls yang diimport. Kemudian buat fungsi path() yang include pages.urls atau include urls aplikasi.
from django.contrib import admin
from django.urls import path, include #disini

urlpatterns = [
    path('admin/', admin.site.urls),
		path('', include('pages.urls')), #disini
]

Fungsi path() adalah fungsi yang digunakan untuk mendefinisikan pola URL dan menghubungkannya dengan fungsi view yang akan dipanggil ketika URL tersebut diakses. Fungsi ini biasanya digunakan untuk mendefinisikan URL yang memiliki jalur tetap dan tidak menerima parameter variabel.

Fungsi include() adalah fungsi yang digunakan untuk menyertakan atau mengimpor konfigurasi URL dari aplikasi Django lain. Dengan menggunakan fungsi include, Anda dapat membagi konfigurasi URL menjadi beberapa file dan mengatur URL untuk setiap aplikasi secara terpisah. Dengan include setiap aplikasi memiliki urls sendiri-sendiri.

  1. Buat pages.urls, yaitu file urls.py di folder pages. Ketik di terminal:
(djangoku-wI74BJPd) D:\djangoku>type nul > pages/urls.py
  1. Buka file kosong urls.py pada folder pages, dan buat code berikut: code import fungsi path dari modul django.urls; code import fungsi tampilan_homepage dari modul views; dan buat variabel urlpatterns.
from django.urls import path
from .views import tampilan_homepage

urlpatterns = [
		path('', tampilan_homepage, name='home')
]

views adalah sebuah modul, karena letaknya lokal di dalam folder yang sama dengan urls.py aplikasi pages.

Pola dasar fungsi path() yaitu:

path('Url_yang_dipanggil/',Fungsi_dalam_views_aplikasi,name='nama url')

Jika url kosong berarti url utama site ketika domain dipanggil.

Fungsi_dalam_views_aplikasi harus dibuat di views.py. Ini berfungsi untuk mengolah permintaan dan memberikan response.

name=’nama_url’ (opsional): Ini adalah nama unik yang diberikan pada pola URL. Penggunaan nama URL ini memudahkan dalam mengakses URL di kode Python atau dalam template Django menggunakan reverse() atau tag URL.

Url_yang_dipangil dapat memiliki pola berikut:

urlpatterns = [
    path('', home_page_view, name='home'),
    path('about/', about_page_view, name='goer'),
    path('products/<int:product_id>/', product_detail_view, name='product_detail'),
]
  • Pola URL pertama (''): Cocok dengan URL utama (http://localhost:8000/) dan memanggil fungsi view home_page_view. URL tersebut dinamakan dengan 'home'.
  • Pola URL kedua ('about/'): Cocok dengan URL http://localhost:8000/about/ dan memanggil fungsi view about_page_view. URL tersebut dinamakan dengan 'goer'.
  • Pola URL ketiga ('products/<int:product_id>/'): Ini adalah pola URL yang menggunakan bagian variabel <int:product_id> yang cocok dengan URL seperti http://localhost:8000/products/123/, di mana 123 adalah nilai yang dinamis dan akan ditangkap oleh view. Fungsi view product_detail_view akan dipanggil dengan product_id sebagai argumen.

Permintaan url (alamat url) pada urls.py di aplikasi boleh berbeda dengan permintaan url (alamat url) pada urls.py di root django.

Misalnya:

# my_app/urls.py
from django.urls import path
from .views import home_view, about_view

urlpatterns = [
    path('home/', home_view, name='home'),
    path('about/', about_view, name='about'),
]
# my_project/urls.py
from django.urls import path, include

urlpatterns = [
    path('my_app/', include('my_app.urls')),
    # ... pola URL lain untuk aplikasi root ...
]

Dengan cara ini, pola URL untuk aplikasi my_app adalah 'my_app/', tetapi setelah digabungkan dengan include() dalam urls.py root, URL menjadi 'my_app/home/' dan 'my_app/about/'. Jadi, alamat URL pada urls.py aplikasi tidak perlu sama persis dengan alamat URL pada urls.py root aplikasi Django.

Ketika pengguna mengakses http://localhost:8000/my_app/home/, Django akan mencocokkan URL tersebut dengan pola URL 'home/' yang didefinisikan dalam urls.py aplikasi my_app. Ketika pengguna mengakses http://localhost:8000/my_app/about/, Django akan mencocokkan URL tersebut dengan pola URL 'about/' dari aplikasi my_app.

  1. Kembali lanjut, yaitu fungsi tampilan_homepage harus dibuat di views.py pada folder aplikasi. Buat fungsi sederhana pada views.py untuk menampilkan tulisan Hello World.
from django.http import HttpResponse

# Create your views here.
def tampilan_homepage(request):
    return HttpResponse('Hello World')

Kita belum menggunakan template atau file html yang melibatkan fungsi render, tetapi hanya ingin menampilkan Hello World di landing page atau route root, yang kemudian akan kita deploy di docker. Nyalakan server:

(djangoku-wI74BJPd) D:\djangoku>python manage.py runserver

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
July 25, 2023 - 13:22:28
Django version 4.2.3, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

Lihat di browser, hasilnya:

Keluar dari environmen django:

(djangoku-wI74BJPd) D:\djangoku>exit

Contoh aplikasi pages yang menampilkan Hello World telah siap dideploy ke docker. Namun kita sebelumnya harus menyiapkan docker dekstop di localhost. (Bersambung Part 3)

Leave a Reply