web django

Membuat Aplikasi Web Blog dengan Django

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.

Tolong Bagikan:
Pin Share

Leave a Comment

Translate »
Social media & sharing icons powered by UltimatelySocial

Enjoy this blog? Please spread the word :)

Scroll to Top
Skip to content