Farih.co.id
Home Programming Cara Membuat Aplikasi CRUD Dengan Tampilan Berbasis Kelas Django

Cara Membuat Aplikasi CRUD Dengan Tampilan Berbasis Kelas Django

crud

Salah satu fitur utama Django adalah dukungan bawaannya untuk membuat proyek di atas operasi CRUD (Buat, Baca, Perbarui, Hapus). Sementara tampilan berbasis kelas Django menyediakan cara yang cepat, mudah, dan fleksibel untuk membuat aplikasi web, banyak pengembang masih menggunakan tampilan berbasis fungsi.


Tampilan berbasis kelas menawarkan beberapa keuntungan dibandingkan tampilan berbasis fungsi, termasuk pewarisan, penataan kode, penggunaan kembali kode, dan banyak lagi. Meskipun mengimplementasikan tampilan berbasis kelas mungkin tampak sedikit rumit, panduan ini akan membantu Anda memahami konsep dengan membuat aplikasi pengelola tugas dan memberikan petunjuk langkah demi langkah.


Apakah Tampilan Berbasis Kelas di Django?

Di Django, tampilan adalah fungsi Python yang menerima permintaan web dan mengembalikan respons web. Tampilan berbasis kelas (CBV) adalah cara alternatif untuk mendefinisikan tampilan di Django menggunakan kelas Python alih-alih fungsi.

CBV memiliki beberapa keunggulan, seperti pengorganisasian kode yang lebih baik, penggunaan kembali kode yang lebih mudah, dan kemampuan menggunakan pewarisan untuk membuat variasi tampilan yang ada. CBV juga menyediakan metode bawaan seperti mendapatkan() Dan pos() metode yang dapat Anda timpa untuk perilaku khusus.

Tampilan Berbasis Kelas Tersedia di Django

Django menyediakan beberapa CBV bawaan untuk kasus penggunaan populer, seperti menampilkan daftar objek atau membuat yang baru. Beberapa CBV bawaan ini adalah:

  1. Tampilan Daftar: Tampilan ini merender daftar objek yang diambil dari model. Misalnya, halaman yang mencantumkan semua posting yang tersedia di blog akan menggunakan a Tampilan Daftar.
  2. DetailView: Tampilan ini merender tampilan mendetail dari satu objek yang diambil dari model. Anda dapat menggunakan a DetailView untuk menampilkan detail postingan tertentu di aplikasi blog.
  3. BuatTampilan: Tampilan ini merender formulir untuk membuat objek baru dan menangani pengiriman formulir. Misalnya, di aplikasi pengelola tugas, Anda akan menggunakan tampilan ini untuk membuat tugas baru.
  4. Hapus Lihat: Tampilan ini merender halaman konfirmasi untuk menghapus objek dan menangani penghapusan halaman.
  5. Tampilan Pembaruan: Tampilan ini merender formulir untuk memperbarui objek yang sudah ada dan menangani pengiriman formulir.

Django juga menyediakan tampilan lain, termasuk Tampilan Templat, RedirectViewDan Tampilan Formulir. Anda bisa merujuk ke dokumentasi Django untuk informasi mendetail tentang tampilan berbasis kelas.

Bangun Aplikasi Pengelola Tugas Dengan Tampilan Berbasis Kelas Django

Membuat aplikasi seperti aplikasi pengelola tugas akan membuat Anda memahami cara mengimplementasikan operasi CRUD dengan CBV. Pengelola tugas memiliki fitur yang memungkinkan pengguna membuat, memperbarui, menghapus, dan membaca tugas. Fitur-fitur ini sejalan dengan operasi CRUD. Langkah-langkah berikut akan membantu Anda membuat aplikasi pengelola tugas dengan Django CBVs.

Siapkan Proyek Django

Untuk membuat aplikasi pengelola tugas dengan Django, Anda harus memulai dengan mengikuti langkah-langkah berikut:

  1. Instal Django ke lingkungan virtual Python Anda dengan perintah ini:
     pip install django 
  2. Buat proyek Django. Perintah berikut akan membuat proyek bernama project_core.
     django-admin startproject project_core . 
  3. Buat aplikasi bernama Pengelola tugas.
     python manage.py startapp task_manager 
  4. Di Anda pengaturan.py tambahkan nama aplikasi Anda ke INSTALLED_APPS daftar.
     INSTALLED_APPS = [
        'task_manager',
    ]
  5. Buka urls.py file di direktori proyek Anda dan konfigurasikan URL untuk Anda Pengelola tugas aplikasi:
     from django.urls import path, include

    urlpatterns = [
        path('', include('task_manager.urls')),
    ]

Buat Model untuk Aplikasi Pengelola Tugas Anda

Di direktori aplikasi Anda (atau Pengelola tugas folder), buka file Anda model.py file dan buat model untuk aplikasi pengelola tugas Anda. Berikut contoh model yang dapat Anda gunakan:

 from django.db import models

class Task(models.Model):
    title = models.CharField(max_length=200)
    description = models.TextField()
    completed = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)

Migrasikan model Anda dengan perintah ini:

 python manage.py makemigrations && python manage.py migrate

Buat Formulir Django untuk Aplikasi Anda

Anda harus memiliki formulir untuk penanganan Membuat Dan Memperbarui operasi. Di direktori aplikasi Anda, buat file bernama forms.py. Berikut contohnya:

 from django import forms
from .models import Task

class TaskForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = ['title', 'description', 'completed']

        widgets = {
            'title': forms.TextInput(attrs={'class': 'form-control',}),
            'description': forms.Textarea(attrs={'class': 'form-control',}),
            'completed': forms.CheckboxInput(attrs={'class': 'form-check-input'}),
        }

Kode di atas memiliki kelas yang disebut Formulir Tugas yang mendefinisikan bidang dan widget formulir. Ini juga menentukan model yang akan digunakan.

Buat Tampilan Django untuk Setiap Operasi CRUD

Aplikasi CRUD dasar dengan CBV memerlukan setidaknya empat tampilan untuk menangani semua operasi secara efektif. Beberapa langkah selanjutnya akan menunjukkan cara membuatnya.

Impor Modul dan Paket yang Diperlukan

Bukalah views.py file dan buat impor berikut:

 from django.views.generic import ListView, DetailView, CreateView, UpdateView, DeleteView
from django.urls import reverse_lazy
from .models import Task
from .forms import TaskForm

Kode di atas mengimpor lima CBV. Itu juga impor membalikkan_malas untuk mengarahkan pengguna ke URL tertentu setelah pengiriman formulir. Akhirnya, itu mengimpor file Tugas model, dan Formulir Tugas dibuat sebelumnya.

Buat Tampilan ke Daftar Objek Model

Aplikasi pengelola tugas harus memiliki halaman yang mencantumkan semua tugas yang dibuat oleh pengguna. Untuk membuat tampilan untuk ini, Anda harus menggunakan Tampilan Daftar. Berikut contohnya:

 class TaskListView(ListView):
    model = Task
    template_name = 'task_manager/task_list.html'
    context_object_name = 'tasks'

Tampilan di atas mendefinisikan tiga atribut yaitu:

  1. model: Atribut ini menentukan model mana yang akan digunakan untuk tampilan spesifik tersebut.
  2. template_name: Atribut ini memberi tahu Django cetakan mana yang akan dirender ke peramban.
  3. konteks_objek_nama: Atribut ini menentukan nama yang memungkinkan templat mengakses daftar objek dalam model.

Sebagian besar CBV akan berisi ketiga atribut ini.

Buat Tampilan untuk Menangani Detail Tugas

Setiap tugas yang dibuat pengguna harus memiliki halaman yang menunjukkan detailnya. CBV yang ideal untuk menangani ini adalah DetailVew. Berikut ini contoh sederhana:

 class TaskDetailView(DetailView):
    model = Task
    template_name = 'task_manager/task_detail.html'

Buat Tampilan untuk Pembuatan Tugas

Buat tampilan untuk menangani pembuatan atau penambahan tugas baru. Ini adalah Membuat bagian dari operasi CRUD, dan pandangan yang tepat untuk ini adalah BuatTampilan. Berikut cara menggunakannya:

 class TaskCreateView(CreateView):
    model = Task
    form_class = TaskForm
    template_name = 'task_manager/task_form.html'
    success_url = reverse_lazy('task_list')

Kode di atas memperkenalkan dua atribut baru: form_class Dan success_url.

Itu form_class atribut memberi tahu tampilan kelas formulir mana yang akan dirender dan digunakan untuk operasinya.

Itu success_url menentukan cara mengarahkan ulang pengguna setelah mengirimkan formulir. Ini menggunakan membalikkan_malas fungsi yang mengambil nama jalur URL.

Buat Tampilan untuk Mengedit Tugas

Untuk mengizinkan pengguna Anda mengedit atau memperbarui tugas mereka, Anda harus membuat tampilan yang terlihat seperti ini:

 class TaskUpdateView(UpdateView):
    model = Task
    form_class = TaskForm
    template_name = 'task_manager/task_form.html'
    success_url = reverse_lazy('task_list')

Tampilan di atas mirip dengan TaskCreateView dibuat sebelumnya. Satu-satunya perbedaan adalah penggunaan Tampilan Pembaruan.

Buat Tampilan untuk Menangani Operasi Penghapusan

Untuk mengizinkan pengguna Anda menghapus tugas kapan pun mereka mau, Anda harus menggunakan Hapus Lihat CBV. Berikut contohnya:

 class TaskDeleteView(DeleteView):
    model = Task
    template_name = 'task_manager/task_confirm_delete.html'
    success_url = reverse_lazy('task_list')

Konfigurasikan URL Aplikasi Anda

Di direktori aplikasi Anda, buat file urls.py file dan konfigurasikan pola URL Anda seperti ini:

 from django.urls import path
from .views import TaskListView, TaskDetailView, TaskCreateView, TaskUpdateView, TaskDeleteView

urlpatterns =
    path('', TaskListView.as_view(), name='task_list'),
    path('create/', TaskCreateView.as_view(), name='task_create'),
    path('tasks/<int:pk>/', TaskDetailView.as_view(), name='task_detail'),
    path('tasks/<int:pk>/update/', TaskUpdateView.as_view(), name='task_update'),
    path('tasks/<int:pk>/delete/', TaskDeleteView.as_view(), name='task_delete'),
]

Pola URL di atas serupa dengan URL yang dibuat dengan tampilan berbasis fungsi. Perbedaannya adalah as_view() fungsi ditambahkan ke akhir setiap nama tampilan.

Anda dapat menggunakan siput Django untuk membuat URL alih-alih kunci utama yang digunakan di atas.

Buat Template untuk Tampilan Anda

Mengizinkan pengguna Anda untuk melakukan tindakan yang ditentukan dalam tampilan di atas menunjukkan bahwa Anda menyediakan antarmuka untuk berinteraksi dengan mereka. Dari tampilan yang dibuat sebelumnya, aplikasi pengelola tugas seharusnya memiliki empat antarmuka pengguna.

Di direktori aplikasi Anda, buat empat template HTML. Anda juga harus membuat basis.html mengajukan. Anda dapat mengatur gaya templat Django Anda dengan Bootstrap untuk menghemat waktu.

Templat Daftar Tugas

Templat ini harus menyertakan kode yang mencantumkan semua tugas dalam model. Contoh kerangka kode adalah ini:

 {% extends 'base.html' %}

{% block content %}
<center>
    <h1>Your Tasks</h1>
    <a href="{% url 'task_create' %}">Add Task</a>
      {% for task in tasks %}
      <div>
        <div>
          <h5>{{ task.title }}</h5>
          <p>{{ task.description|truncatechars:50 }}</p>
          <p>
            <strong>Completed:</strong>
            {% if task.completed %}Yes{% else %}No{% endif %}
          </p>
          <a href="{% url 'task_detail' task.pk %}">
            Read more
          </a>
          <a href="{% url 'task_delete' task.pk %}">
            Delete task
          </a>
        </div>
      </div>
        {% empty %}
          <h3>No tasks yet.</h3>
          <a href="{% url 'task_create' %}">Add Task</a>
      {% endfor %}
</center>
{% endblock %}

Dengan beberapa kelas Bootstrap, Anda dapat membuat halaman Anda terlihat seperti ini:

daftar tugas di aplikasi pengelola tugas

Templat Detail Tugas

Halaman ini harus menunjukkan detail lengkap dari setiap tugas yang dibuat. Berikut contoh template yang bisa Anda gunakan:

 {% extends 'base.html' %}

{% block content %}
<h1>{{ task.title }}</h1>
<p>{{ task.description }}</p>
<p>Completed: {% if task.completed %}Yes{% else %}No{% endif %}</p>
<a href="{% url 'task_update' task.pk %}">Edit task</a>
<a href="{% url 'task_delete' task.pk %}">Delete task</a>
{% endblock %}

Bergantung pada pendekatan gaya Anda, halaman Anda akan terlihat seperti ini:

rincian lengkap dari tugas untuk membeli bahan makanan

Templat Formulir Tugas

Templat ini harus berisi formulir yang memungkinkan pengguna membuat atau memperbarui tugas.

 {% extends 'base.html' %}

{% block content %}
  <h1>Create Task</h1>
  <form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">Save</button>
  </form>
{% endblock %}

Templat akan terlihat seperti ini:

formulir untuk membuat dan mengedit tugas

Hapus Templat Tugas

Template ini harus menjadi halaman konfirmasi untuk mencegah penghapusan tugas secara tidak sengaja.

 {% extends 'base.html' %}

{% block content %}
  <h1>Confirm Delete</h1>
  <p>Are you sure you want to delete "{{ object.title }}"?</p>
  <form method="post">
    {% csrf_token %}
    <button type="submit">Delete</button>
    <a href="{% url 'task_list' %}">Cancel</a>
  </form>
{% endblock %}

Dengan beberapa Bootstrap, halaman Anda akan terlihat seperti ini:

halaman untuk mengonfirmasi operasi penghapusan pengguna

Gunakan Tampilan Berbasis Kelas untuk Meningkatkan Produktivitas Anda

Tampilan berbasis kelas adalah cara yang bagus untuk menulis kode yang rapi dan teratur dalam waktu singkat, sehingga meningkatkan produktivitas Anda. Anda harus menggunakannya dalam proyek Anda sebanyak mungkin. Selain itu, Anda dapat lebih jauh mengintegrasikan fitur-fitur seperti fungsi pencarian, notifikasi, dan sebagainya untuk membuat aplikasi pengelola tugas Anda menjadi aplikasi fungsional yang lengkap.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

Ad