Computer >> Máy Tính >  >> Lập trình >> Python

Thêm một DeleteView trong Django

DeleteView là một chế độ xem trong Django được sử dụng để xóa bất kỳ dữ liệu mô hình nào khỏi giao diện người dùng. Đó là một chế độ xem tích hợp có thể dễ dàng áp dụng. Nó hoạt động giống như trang quản trị trong việc xóa chế độ xem. Nó thực sự hữu ích trong các dự án trong thế giới thực.

Trước hết, hãy tạo một dự án Django và một ứng dụng. Tôi đã tạo dự án với tên "tutorial11" và ứng dụng có tên "modelFormsDemo" .

Bây giờ, chúng ta hãy làm một số điều cơ bản. Thêm ứng dụng trong settings.py -

INSTALLED_APPS+ = ['modelFormsDemo']

Trong urls.py của dự án -

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
   path('admin/', admin.site.urls),
   path('', include('modelFormsDemo.urls'))
]

Ở đây chúng tôi đã bao gồm url của ứng dụng.

Trong urls.py của ứng dụng -

from django.urls import path,include
from . import views

urlpatterns = [
   path('', views.home,name="home"),
   path('student/delete//', views.StudentDeleteView.
as_view(),name="delete"),
   path('success/',views.success,name='success')
]

Ở đây, chúng tôi đã tạo 3 URL:một để hiển thị giao diện người dùng, DeleteView để xóa và Thành công để chuyển hướng sau khi xóa.

Ví dụ

Trong models.py , thêm cái này -

from django.db import models

# Create your models here.
class Student(models.Model):
   name=models.CharField(max_length=100)
   standard=models.CharField(max_length=100)
   section=models.CharField(max_length=100)

Ở đây chúng tôi đã tạo một mô hình đơn giản.

Trong views.py , thêm phần sau -

from django.shortcuts import render
from .forms import StudentForm
from django.views.generic.edit import DeleteView
from .models import Student
from django.urls import reverse_lazy

# Create your views here.
def home(request):
   if request.method=='POST':
      form=StudentForm(request.POST)
      if form.is_valid():
         form.save()
   stuForm=StudentForm()
   return render(request,'home.html',{"stu_form":stuForm})
class StudentDeleteView(DeleteView):
   model=Student
   template_name='delete_view.html'
   success_url=reverse_lazy("success")

Ở đây, trong chế độ xem chính, chúng tôi đã hiển thị giao diện người dùng và trong DeleteView, chúng tôi hiển thị delete_view.html sẽ yêu cầu xác nhận xóa.

Tạo form.py trong thư mục ứng dụng và viết cái này -

from django import forms
from .models import Student

class StudentForm(forms.ModelForm):
   class Meta:
      model=Student
      fields=['name', 'standard', 'section']

Ở đây, chúng tôi đã tạo biểu mẫu đơn giản mà chúng tôi sẽ hiển thị ở chế độ xem tại nhà.

Bây giờ, hãy tạo một mẫu và thêm ba tệp bên trong nó home.html, delete_view.html thành công.html.

Trong home.html -

<!DOCTYPE html>
<html>
   <head>
      <title>TUT</title>
   </head>
   <body>
      {% for fm in stu_form %}
      <form method="post">
         {%csrf_token%}
         {{fm.errors}}<br>
         {{fm.label}}:{{fm}}<br>
      {%endfor%}
         <button type="submit">Submit</button>
      </form>
   </body>
</html>

Trong delete_view .html -

<!DOCTYPE html>
<html>
   <head>
      <title>TUT</title>
   </head>
   <body>
      <form method="post">{% csrf_token %}
         <p>Are you sure you want to delete "{{ object }}"?</p>
         <input type="submit" value="Confirm">
      </form>
   </body>
</html>

Trong thành công.html -

<!DOCTYPE html>
<html>
   <head>
      <title>TUT</title>
   </head>
   <body>
      <h2>Success</h2>
   </body>
</html>


Cả ba đều là tệp HTML mà chúng tôi đang kết xuất. home.html là để thêm sinh viên, delete_view.html là để xóa học sinh và thành công.html để chuyển hướng.

Bây giờ bạn có thể tiến hành kiểm tra đầu ra.

Đầu ra

Trang chủ.html -

Thêm một DeleteView trong Django


Nếu bạn truy cập https://127.0.0.1:8000/student/delete/(student object id) /, thì bạn sẽ thấy delete_view.html của chúng tôi.

Delete_view.html -


Thêm một DeleteView trong Django