Membuat Aplikasi Blog
Setelah menjalankan server, kita dapat membuat aplikasi “blog” dengan menggunakan perintah python manage.py startapp blog
pada terminal.
python manage.py startapp blog
Setelah menjalankan perintah di atas, direktori blog/
akan dibuat dengan beberapa file dan direktori di dalamnya, seperti models.py
, views.py
, urls.py
, dan migrations/
.
Mengatur URL
Setelah membuat aplikasi “blog”, kita perlu mengatur URL agar dapat mengakses fitur-fitur dalam aplikasi. Kita dapat mengatur URL pada file blog/urls.py
.
from django.urls import path from . import views urlpatterns = [ path('', views.post_list, name='post_list'), path('post/<int:pk>/', views.post_detail, name='post_detail'), path('post/new/', views.post_new, name='post_new'), path('post/<int:pk>/edit/', views.post_edit, name='post_edit'), ]
Contoh di atas mendefinisikan beberapa URL untuk aplikasi “blog”, seperti URL untuk menampilkan daftar posting blog (post_list
), menampilkan detail posting blog (post_detail
), membuat posting blog baru (post_new
), dan mengedit posting blog yang sudah ada (post_edit
).
Membuat View
Setelah mengatur URL, kita perlu membuat view yang akan menangani permintaan dari URL. View adalah fungsi Python yang akan mengambil permintaan HTTP dan merespon dengan template HTML atau data JSON.
Contoh view untuk menampilkan daftar posting blog adalah sebagai berikut:
from django.shortcuts import render from django.utils import timezone from .models import Post def post_list(request): posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date') return render(request, 'blog/post_list.html', {'posts': posts})
View di atas mengambil semua posting blog yang sudah dipublikasikan (published_date__lte=timezone.now()
) dan diurutkan berdasarkan tanggal publikasi (order_by('-published_date')
). Data posting blog kemudian dikirim ke template blog/post_list.html
untuk ditampilkan.
Membuat Template
Setelah membuat view, kita perlu membuat template HTML untuk menampilkan data dari view. Template HTML adalah file yang akan di-render oleh Django untuk menghasilkan halaman web.
Contoh template untuk menampilkan daftar posting blog adalah sebagai berikut:
{% extends 'blog/base.html' %} {% block content %} {% for post in posts %} <div class="post"> <div class="date"> {{ post.published_date }} </div> <h1><a href="{% url 'post_detail' pk=post.pk %}">{{ post.title }}</a></h1> <p>{{ post.text|truncatechars:200 }}</p> </div> {% empty %} <p>Tidak ada posting.</p> {% endfor %} {% endblock %}
Contoh di atas menggunakan bahasa template Django, yang memungkinkan kita untuk memasukkan variabel dan logika ke dalam template HTML.
Melakukan Migrasi
Setelah membuat model, view, dan template untuk aplikasi “blog”, kita perlu melakukan migrasi untuk memperbarui basis data sesuai dengan perubahan yang kita buat. Kita dapat melakukan migrasi dengan menggunakan perintah python manage.py makemigrations
dan python manage.py migrate
pada terminal.
python manage.py makemigrations python manage.py migrate
Setelah melakukan migrasi, aplikasi “blog” siap digunakan. Kita dapat mengakses daftar posting blog pada http://localhost:8000/
.
Membuat Posting Baru
Selanjutnya, kita dapat menambahkan fitur untuk membuat posting blog baru. Pertama, kita perlu membuat view dan template untuk form posting baru.
from django.shortcuts import render, get_object_or_404, redirect from django.utils import timezone from .models import Post from .forms import PostForm def post_new(request): if request.method == "POST": form = PostForm(request.POST) if form.is_valid(): post = form.save(commit=False) post.author = request.user post.published_date = timezone.now() post.save() return redirect('post_detail', pk=post.pk) else: form = PostForm() return render(request, 'blog/post_edit.html', {'form': form})
Contoh di atas mengambil data dari form posting baru yang dikirimkan melalui permintaan POST dan menyimpannya ke basis data setelah memvalidasi data tersebut. Jika data berhasil disimpan, pengguna akan diarahkan ke halaman detail posting baru.
{% extends 'blog/base.html' %} {% block content %} <h1>Posting Baru</h1> <form method="POST" class="post-form">{% csrf_token %} {{ form.as_p }} <button type="submit" class="save btn btn-default">Simpan</button> </form> {% endblock %}
Contoh di atas menampilkan form posting baru yang menggunakan PostForm
sebagai form model.
Menambahkan Fitur Edit
Selain fitur posting baru, kita juga dapat menambahkan fitur untuk mengedit posting blog yang sudah ada.
def post_edit(request, pk): post = get_object_or_404(Post, pk=pk) if request.method == "POST": form = PostForm(request.POST, instance=post) if form.is_valid(): post = form.save(commit=False) post.author = request.user post.published_date = timezone.now() post.save() return redirect('post_detail', pk=post.pk) else: form = PostForm(instance=post) return render(request, 'blog/post_edit.html', {'form': form})
Contoh di atas mengambil data dari form edit posting yang dikirimkan melalui permintaan POST dan menyimpannya ke basis data setelah memvalidasi data tersebut. Jika data berhasil disimpan, pengguna akan diarahkan ke halaman detail posting yang telah diedit.
{% extends 'blog/base.html' %} {% block content %} <h1>Edit Posting</h1> <form method="POST" class="post-form">{% csrf_token %} {{ form.as_p }} <button type="submit" class="save btn btn-default">Simpan</button> </form> {% endblock %}
Contoh di atas menampilkan form edit posting yang menggunakan PostForm
sebagai form model dan memuat data yang sedang diedit.
Kesimpulan
Django merupakan salah satu framework web yang populer dan digunakan oleh banyak pengembang web untuk membuat aplikasi web. Dalam tutorial ini, kita telah belajar bagaimana membuat aplikasi web sederhana dengan menggunakan Django. Kita telah membuat model untuk basis data, view untuk menampilkan data, dan template untuk menampilkan data dalam format HTML. Selain itu, kita juga telah menambahkan fitur untuk membuat posting baru dan mengedit posting yang telah ada.
Tentunya masih banyak fitur yang bisa ditambahkan pada aplikasi web Django yang lebih kompleks. Namun, dengan mempelajari dasar-dasar penggunaan Django seperti yang telah dijelaskan dalam tutorial ini, kita dapat memperluas pengetahuan dan kemampuan kita dalam mengembangkan aplikasi web menggunakan Django.