/ / Cách tạo ứng dụng CRUD với chế độ xem dựa trên lớp Django

Cách tạo ứng dụng CRUD với chế độ xem dựa trên lớp Django

Một trong những tính năng chính của Django là hỗ trợ tích hợp để tạo dự án trên các hoạt động CRUD (Tạo, Đọc, Cập nhật, Xóa). Trong khi các dạng xem dựa trên lớp của Django cung cấp một cách nhanh chóng, dễ dàng và linh hoạt để xây dựng các ứng dụng web, nhiều nhà phát triển vẫn sử dụng các dạng xem dựa trên chức năng.


Chế độ xem dựa trên lớp cung cấp một số lợi ích so với chế độ xem dựa trên chức năng, bao gồm tính kế thừa, cấu trúc mã, khả năng sử dụng lại mã, v.v. Mặc dù việc triển khai các dạng xem dựa trên lớp có vẻ hơi phức tạp, hướng dẫn này sẽ giúp bạn hiểu khái niệm này bằng cách xây dựng ứng dụng trình quản lý tác vụ và cung cấp hướng dẫn từng bước.


Chế độ xem dựa trên lớp ở Django là gì?

Trong Django, chế độ xem là các hàm Python nhận yêu cầu web và trả về phản hồi web. Chế độ xem dựa trên lớp (CBV) là một cách khác để xác định chế độ xem trong Django bằng cách sử dụng các lớp Python thay vì hàm.

CBV có một số lợi thế, chẳng hạn như tổ chức mã tốt hơn, sử dụng lại mã dễ dàng hơn và khả năng sử dụng tính kế thừa để tạo các biến thể của chế độ xem hiện có. CBV cũng cung cấp các phương thức tích hợp như lấy()bưu kiện() các phương pháp mà bạn có thể ghi đè lên các hành vi tùy chỉnh.

Chế độ xem dựa trên lớp có sẵn trong Django

Django cung cấp một số CBV tích hợp cho các trường hợp sử dụng phổ biến, chẳng hạn như hiển thị danh sách đối tượng hoặc tạo đối tượng mới. Một số CBV tích hợp này là:

  1. Chế độ xem danh sách: Chế độ xem này hiển thị danh sách các đối tượng được lấy từ một mô hình. Chẳng hạn, một trang liệt kê tất cả các bài đăng có sẵn trong blog sẽ sử dụng một ListView.
  2. Góc nhìn chi tiết: Chế độ xem này hiển thị chế độ xem chi tiết của một đối tượng được lấy từ một mô hình. Bạn có thể sử dụng một Góc nhìn chi tiết để hiển thị chi tiết của các bài đăng cụ thể trong một ứng dụng blog.
  3. TạoChế độ xem: Chế độ xem này hiển thị một biểu mẫu để tạo một đối tượng mới và xử lý việc gửi biểu mẫu. Chẳng hạn, trong ứng dụng quản lý tác vụ, bạn sẽ sử dụng chế độ xem này để tạo tác vụ mới.
  4. Xóa Xem: Chế độ xem này hiển thị trang xác nhận xóa đối tượng và xử lý việc xóa trang.
  5. Cập nhậtXem: Dạng xem này hiển thị một biểu mẫu để cập nhật một đối tượng hiện có và xử lý việc gửi biểu mẫu.

Django cũng cung cấp các chế độ xem khác, bao gồm Chế độ xem mẫu, Chế độ xem chuyển hướngFormView. Bạn có thể tham khảo tài liệu của Django để biết thông tin chi tiết về chế độ xem dựa trên lớp.

Xây dựng ứng dụng Trình quản lý tác vụ với Chế độ xem dựa trên lớp Django

Xây dựng một ứng dụng chẳng hạn như ứng dụng quản lý tác vụ sẽ giúp bạn hiểu cách triển khai các hoạt động CRUD với CBV. Trình quản lý tác vụ có các tính năng cho phép người dùng tạo, cập nhật, xóa và đọc tác vụ. Các tính năng này phù hợp với hoạt động CRUD. Các bước sau đây sẽ giúp bạn xây dựng ứng dụng quản lý tác vụ với Django CBV.

Thiết lập dự án Django

Để tạo ứng dụng quản lý tác vụ với Django, bạn nên bắt đầu bằng cách làm theo các bước sau:

  1. Cài đặt Django vào môi trường ảo Python của bạn bằng lệnh này:
     pip install django 
  2. Tạo một dự án Django. Lệnh sau sẽ tạo một dự án có tên project_core.
     django-admin startproject project_core . 
  3. Tạo một ứng dụng có tên quản lý công việc.
     python manage.py startapp task_manager 
  4. trong bạn cài đặt.py thêm tên ứng dụng của bạn vào INSTALLED_APPS danh sách.
     INSTALLED_APPS = [
        'task_manager',
    ]
  5. Mở url.py tệp trong thư mục dự án của bạn và định cấu hình URL cho quản lý công việc ứng dụng:
     from django.urls import path, include

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

Tạo mô hình cho ứng dụng Trình quản lý tác vụ của bạn

Trong thư mục ứng dụng của bạn (hoặc quản lý công việc thư mục), mở của bạn mô hình.py tệp và tạo mô hình cho ứng dụng trình quản lý tác vụ của bạn. Đây là một mô hình mẫu bạn có thể sử dụng:

 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)

Di chuyển mô hình của bạn bằng lệnh này:

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

Tạo biểu mẫu Django cho ứng dụng của bạn

Bạn nên có một hình thức để xử lý Tạo nênCập nhật hoạt động. Trong thư mục ứng dụng của bạn, hãy tạo một tệp có tên biểu mẫu.py. Đây là một ví dụ:

 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'}),
        }

Đoạn mã trên có một lớp gọi là Biểu mẫu nhiệm vụ xác định các trường và tiện ích con của biểu mẫu. Nó cũng chỉ định mô hình để sử dụng.

Tạo chế độ xem Django cho mỗi thao tác CRUD

Ứng dụng CRUD cơ bản với CBV yêu cầu ít nhất bốn chế độ xem để xử lý tất cả các hoạt động một cách hiệu quả. Một số bước tiếp theo sẽ chỉ cho bạn cách tạo chúng.

Nhập các mô-đun và gói cần thiết

mở của bạn lượt xem.py tệp và thực hiện các lần nhập sau:

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

Đoạn mã trên nhập năm CBV. Nó cũng nhập khẩu đảo ngược_lazy để chuyển hướng người dùng đến một URL được chỉ định sau khi gửi biểu mẫu. Cuối cùng, nó nhập khẩu Nhiệm vụ mô hình, và Biểu mẫu nhiệm vụ được tạo trước đó.

Tạo một dạng xem để liệt kê các đối tượng mô hình

Ứng dụng quản lý tác vụ phải có một trang liệt kê tất cả các tác vụ do người dùng tạo. Để tạo chế độ xem cho điều này, bạn nên sử dụng Chế độ xem danh sách. Đây là một ví dụ:

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

Khung nhìn ở trên xác định ba thuộc tính đó là:

  1. người mẫu: Thuộc tính này xác định mô hình nào sẽ được sử dụng cho chế độ xem cụ thể đó.
  2. Tên mẫu: Thuộc tính này cho Django biết mẫu nào sẽ hiển thị cho trình duyệt.
  3. context_object_name: Thuộc tính này xác định tên cho phép mẫu truy cập vào danh sách các đối tượng trong mô hình.

Hầu hết các CBV sẽ chứa ba thuộc tính này.

Tạo Chế độ xem để xử lý chi tiết tác vụ

Mỗi tác vụ mà người dùng tạo nên có một trang hiển thị chi tiết của nó. CBV lý tưởng để xử lý việc này là Xem chi tiết. Đây là một ví dụ đơn giản:

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

Tạo Chế độ xem để tạo tác vụ

Tạo chế độ xem để xử lý việc tạo hoặc thêm tác vụ mới. Đây là Tạo nên một phần của hoạt động CRUD và chế độ xem phù hợp cho điều này là TạoChế độ xem. Đây là cách sử dụng nó:

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

Đoạn mã trên giới thiệu hai thuộc tính mới: form_classthành công_url.

Các form_class thuộc tính cho khung nhìn biết lớp biểu mẫu nào sẽ kết xuất và sử dụng cho các hoạt động của nó.

Các thành công_url chỉ định cách chuyển hướng người dùng sau khi gửi biểu mẫu. Nó sử dụng đảo ngược_lazy chức năng lấy tên của đường dẫn URL.

Tạo Chế độ xem cho Tác vụ chỉnh sửa

Để cho phép người dùng của bạn chỉnh sửa hoặc cập nhật tác vụ của họ, bạn nên tạo một dạng xem giống như sau:

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

Quan điểm trên tương tự như Nhiệm vụTạo Chế độ xem được tạo trước đó. Điểm khác biệt duy nhất là việc sử dụng Cập nhậtXem.

Tạo một View để xử lý thao tác xóa

Để cho phép người dùng của bạn xóa tác vụ bất cứ khi nào họ muốn, bạn nên sử dụng Xóa Xem CBV. Đây là một ví dụ:

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

Định cấu hình URL của ứng dụng của bạn

Trong thư mục ứng dụng của bạn, hãy tạo một url.py tệp và định cấu hình các mẫu URL của bạn như thế này:

 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'),
]

Các mẫu URL ở trên tương tự như các URL được tạo bằng chế độ xem dựa trên chức năng. Sự khác biệt là as_view() chức năng được thêm vào cuối mỗi tên chế độ xem.

Bạn có thể sử dụng sên Django để tạo URL thay vì khóa chính được sử dụng ở trên.

Tạo mẫu cho chế độ xem của bạn

Việc cho phép người dùng của bạn thực hiện các hành động được xác định trong các chế độ xem ở trên cho thấy rằng bạn cung cấp một giao diện để họ tương tác. Từ các dạng xem được tạo trước đó, ứng dụng quản lý tác vụ sẽ có bốn giao diện người dùng.

Trong thư mục ứng dụng của bạn, hãy tạo bốn mẫu HTML. Bạn cũng nên tạo cơ sở.html tài liệu. Bạn có thể tạo kiểu cho các mẫu Django của mình bằng Bootstrap để tiết kiệm thời gian.

Mẫu danh sách nhiệm vụ

Mẫu này phải bao gồm mã liệt kê tất cả các nhiệm vụ trong mô hình. Một ví dụ về bộ xương của mã này là:

 {% 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 %}

Với một số lớp Bootstrap, bạn có thể làm cho trang của mình trông như thế này:

danh sách các tác vụ trong ứng dụng trình quản lý tác vụ

Mẫu chi tiết nhiệm vụ

Trang này sẽ hiển thị đầy đủ chi tiết của từng tác vụ được tạo. Đây là một mẫu ví dụ bạn có thể sử dụng:

 {% 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 %}

Tùy thuộc vào cách tiếp cận kiểu dáng của bạn, trang của bạn sẽ trông như thế này:

chi tiết đầy đủ của một nhiệm vụ để mua cửa hàng tạp hóa

Mẫu biểu mẫu nhiệm vụ

Mẫu này phải chứa một biểu mẫu cho phép người dùng tạo hoặc cập nhật tác vụ.

 {% extends 'base.html' %}

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

Mẫu sẽ trông như thế này:

một hình thức để tạo và chỉnh sửa các nhiệm vụ

Xóa mẫu nhiệm vụ

Bản mẫu này phải là một trang xác nhận để ngăn việc vô tình xóa các tác vụ.

 {% 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 %}

Với một số Bootstrap, trang của bạn sẽ trông như thế này:

một trang để xác nhận thao tác xóa của người dùng

Sử dụng Chế độ xem dựa trên lớp để tăng năng suất của bạn

Chế độ xem dựa trên lớp là một cách tuyệt vời để viết mã rõ ràng, có tổ chức trong một khoảng thời gian ngắn, nhờ đó tăng năng suất của bạn. Bạn nên sử dụng chúng trong các dự án của mình càng nhiều càng tốt. Ngoài ra, bạn có thể tích hợp thêm các tính năng như chức năng tìm kiếm, thông báo, v.v. để biến ứng dụng trình quản lý tác vụ của mình thành một ứng dụng chức năng chính thức.

Similar Posts

Leave a Reply

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