DJANGO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.

Django Delete Form trong Python

Delete Form cho phép người dùng xóa dữ liệu từ cơ sở dữ liệu một cách an toàn và tiện lợi. Tuy nhiên, quá trình này đòi hỏi sự cẩn thận để tránh xóa dữ liệu một cách vô tình hoặc không mong muốn. Chính vì vậy, việc sử dụng Delete Form là một phần quan trọng trong việc xây dựng giao diện người dùng đáng tin cậy và hiệu quả.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong phần tiếp theo của bài viết này, mình sẽ đi sâu vào từng bước để tạo và tích hợp một Delete Form trong ứng dụng Django, bắt đầu từ việc thiết lập môi trường phát triển cho đến việc kiểm tra và chạy ứng dụng để đảm bảo tính hoạt động của Delete Form. Hãy cùng tìm hiểu cách thức triển khai Delete Form trong Django để tạo ra một giao diện người dùng dễ sử dụng.

Delete Form trong ứng dụng web Django có vai trò như thế nào?

Delete Form trong ứng dụng web Django đóng vai trò quan trọng trong quản lý dữ liệu và tương tác của người dùng với ứng dụng. Dưới đây là một số vai trò chính của Delete Form:

  • Xóa dữ liệu an toàn: Delete Form cung cấp một giao diện để người dùng xóa dữ liệu từ cơ sở dữ liệu một cách an toàn và hiệu quả. Người dùng có thể xác nhận việc xóa dữ liệu trước khi thực hiện hành động này, giúp tránh xóa dữ liệu không mong muốn.

    Bài viết này được đăng tại [free tuts .net]

  • Bảo vệ dữ liệu quan trọng: Delete Form giúp bảo vệ dữ liệu quan trọng bằng cách yêu cầu người dùng xác nhận việc xóa trước khi thực hiện hành động này. Điều này đảm bảo rằng dữ liệu quan trọng không bị mất một cách không cần thiết hoặc vô tình.

  • Tăng tính tương tác: Delete Form tạo ra một giao diện tương tác cho người dùng, cho phép họ thực hiện các hành động quản lý dữ liệu một cách dễ dàng và thuận tiện. Việc có một cơ chế xóa dữ liệu trong ứng dụng giúp tăng tính tương tác và trải nghiệm người dùng.

  • Tuân thủ các quy tắc an toàn và bảo mật: Delete Form giúp đảm bảo tuân thủ các quy tắc an toàn và bảo mật trong quản lý dữ liệu. Bằng cách yêu cầu xác nhận trước khi xóa dữ liệu, Delete Form giúp ngăn chặn các hành động xóa không mong muốn và bảo vệ dữ liệu của người dùng.

Delete Form trong ứng dụng web Django đóng vai trò quan trọng trong quản lý dữ liệu, bảo vệ dữ liệu quan trọng và tăng tính tương tác của người dùng với ứng dụng. Đồng thời, nó cũng đảm bảo tuân thủ các quy tắc an toàn và bảo mật, giúp tăng cường tính ổn định và đáng tin cậy của ứng dụng.

Tạo một URL Pattern Django trong Python

Thêm một URL pattern vào danh sách pattern trong file urls.py của ứng dụng blog:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='posts'),
    path('post/create', views.create_post, name='post-create'),
    path('post/edit/<int:id>/', views.edit_post, name='post-edit'),
    path('post/delete/<int:id>/', views.delete_post, name='post-delete'),
    path('about/', views.about, name='about'),
]

URL xóa chấp nhận một id dưới dạng số nguyên để xác định id của bài đăng cần xóa. Khi bạn mở URL:

http://127.0.0.1/post/delete/1/

Django sẽ thực thi hàm delete_post() trong file views.py.

Khai báo một Hàm View Django trong Python

Khai báo một hàm delete_post() trong file views.py của ứng dụng blog:

from django.shortcuts import render,redirect, get_object_or_404
from django.contrib import messages
from .models import Post
from .forms import PostForm

def delete_post(request, id):
    post = get_object_or_404(Post, pk=id)
    context = {'post': post}    
    
    if request.method == 'GET':
        return render(request, 'blog/post_confirm_delete.html',context)
    elif request.method == 'POST':
        post.delete()
        messages.success(request,  'Bài đăng đã được xóa thành công.')
        return redirect('posts')

Trong đoạn mã trên:

  • Đầu tiên, lấy bài đăng bằng id sử dụng get_object_or_404() và render template post_confirm_delete.html. Nếu bài đăng không tồn tại, chuyển hướng đến trang 404.
  • Render template post_confirm_delete.html nếu yêu cầu HTTP là GET.
  • Xóa bài đăng, tạo một thông báo thành công và chuyển hướng đến danh sách bài đăng nếu yêu cầu HTTP là POST.

Tạo một Template Django trong Python

Tạo template post_confirm_delete.html trong thư mục templates/blog của ứng dụng blog. Template này mở rộng từ base.html của dự án:

{% extends 'base.html' %} 

{% block content %}
<h2>Xóa Bài Đăng</h2>

<form method="POST">
  {% csrf_token %}
  <p>Bạn có chắc chắn muốn xóa bài đăng "{{post.title}}" không?</p>
  <div>
    <button type="submit">Có, Xóa</button>
    <a href="{% url 'posts' %}">Hủy</a>
  </div>
</form>

{% endblock content %}

Template này chứa một biểu mẫu có hai nút. Nếu bạn nhấn nút gửi (Có, Xóa) nó sẽ gửi một yêu cầu HTTP POST đến URL đã chỉ định. Ngược lại, nó sẽ điều hướng đến URL danh sách bài đăng.

Thêm liên kết xóa vào file bài đăng

Thêm liên kết xóa cho mỗi bài đăng trong template home.html:

{% extends 'base.html' %}
	
{% block content %}
<h1>Bài Đăng Của Tôi</h1>
	{% for post in posts %}
		<h2>{{ post.title }}</h2>
		<small>Xuất bản vào {{ post.published_at | date:"M d, Y" }} bởi {{ post.author | title}}</small>
		<p>{{ post.content }}</p>
		<p>
			<a href="{% url 'post-edit' post.id %}">Chỉnh sửa</a> 
			<a href="{% url 'post-delete' post.id%}">Xóa</a>
		</p>
	{% endfor %}
{% endblock content %}

Nếu bạn mở URL http://127.0.0.1/ bạn sẽ thấy liên kết xóa xuất hiện kế bên liên kết chỉnh sửa.

Nếu bạn nhấp vào liên kết xóa, bạn sẽ điều hướng đến URL xóa. Ví dụ, sau đây là trang khi xóa bài đăng có tiêu đề "Học lập trình tại freetuts.net***":

Screenshot 202024 05 21 20164715 png

Khi bạn nhấp vào nút "Có, Xóa", Django sẽ thực thi hàm delete_post() để xóa bài đăng và chuyển hướng bạn đến danh sách bài đăng.

Screenshot 202024 05 21 20164731 png

Bằng cách này, bạn đã hoàn thành bài hướng dẫn về cách tạo một biểu mẫu xóa trong Django để xóa một bài đăng.

Screenshot 202024 05 21 20164748 png

Kết bài

Trong phần này, mình đã tạo một chức năng xóa dữ liệu trong ứng dụng Django. Bằng cách tạo Template, View, và cấu hình URL, mình đã có thể hiện thực tính năng xóa dữ liệu một cách an toàn và hiệu quả. Việc sử dụng Form xác nhận xóa giúp bảo vệ dữ liệu và tạo ra một giao diện người dùng tương tác.

Cùng chuyên mục:

Tìm hiểu Event loop trong Python

Tìm hiểu Event loop trong Python

Cách sử dụng ProcessPoolExecutor trong Python

Cách sử dụng ProcessPoolExecutor trong Python

Sử dụng đa xử lý trong Python

Sử dụng đa xử lý trong Python

Cách sử dụng Thread-safe Queue trong Python

Cách sử dụng Thread-safe Queue trong Python

Sử dụng Semaphore trong Python

Sử dụng Semaphore trong Python

Cách dừng Luồng trong Python

Cách dừng Luồng trong Python

Cách sử dụng Semaphore trong Python

Cách sử dụng Semaphore trong Python

Đối tượng Threading Event trong Python

Đối tượng Threading Event trong Python

Tìm hiểu về điều kiện race của threading Lock trong Python

Tìm hiểu về điều kiện race của threading Lock trong Python

Sử dụng lớp ThreadPoolExecutor trong Python

Sử dụng lớp ThreadPoolExecutor trong Python

Các luồng Daemon trong Python

Các luồng Daemon trong Python

Tìm hiểu về Multithreading trong Python

Tìm hiểu về Multithreading trong Python

Cách trả về giá trị từ một Thread trong Python

Cách trả về giá trị từ một Thread trong Python

Cách mở rộng Class Thread trong Python

Cách mở rộng Class Thread trong Python

Cách sử dụng module threading trong Python

Cách sử dụng module threading trong Python

Sự khác biệt giữa các Processes and Threads

Sự khác biệt giữa các Processes and Threads

Tài liệu tham khảo nhanh về Regex trong Python

Tài liệu tham khảo nhanh về Regex trong Python

Hàm Flags của Regex trong Python

Hàm Flags của Regex trong Python

Hàm split() của Regex trong Python

Hàm split() của Regex trong Python

Hàm finditer() của Regex trong Python

Hàm finditer() của Regex trong Python

Top