UpdateView là một chế độ xem trong Django được sử dụng để cập nhật bất kỳ dữ liệu mô hình nào từ 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ư một trang Quản trị trong việc cập nhật chế độ xem. Trong bài viết này, chúng tôi sẽ lấy một ví dụ và minh họa cách sử dụng UpdateView trong Django.
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ờ, 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 , bao gồm các url của ứng dụng.
from django.contrib import admin from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('', include('modelFormsDemo.urls')) ]
Trong urls.py, của ứng dụng thêm phần sau -
from django.urls import path,include from . import views urlpatterns = [ path('', views.home,name="home"), path('student/edit//', views.StudentUpdateView.as_view(), name="update"), path('success/', views.success, name='success') ]
Ở đây chúng tôi đã tạo ba url; một để hiển thị giao diện người dùng, một cho UpdateView để cập nhật và chuyển hướng thành công sau khi cập nhật.
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. Đây là một mô hình rất cơ bản.
Trong views.py , thêm phần sau -
from django.shortcuts import render from .forms import StudentForm from django.views.generic.edit import UpdateView 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 StudentUpdateView(UpdateView): model=Student fields="__all__" template_name='update_view.html' success_url='/success/' def success(request): return render(request,'success.html')
Ở đây chúng tôi đã không làm bất cứ điều gì phức tạp; chúng tôi chỉ đặt tên cho mô hình, các trường và mẫu mà chúng tôi sẽ hiển thị. Ngoài ra, chúng tôi đã xác định một hàm sẽ cho biết những việc cần làm sau khi cập nhật.
Tạo form.py trong thư mục ứng dụng và thêm các dòng sau -
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 chỉ tạo một biểu mẫu mà chúng tôi sẽ hiển thị.
Bây giờ, hãy tạo một mẫu thư mục và thêm ba tệp bên trong nó; home.html, update_view.html và thành công.html.
Trong home.html và update_view.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 thành công.html , thêm các dòng sau -
<!DOCTYPE html> <html> <head> <title>TUT</title> </head> <body> <h2>Success</h2> </body> </html>
Với điều đó, mọi thứ đã được thiết lập. Bây giờ bạn có thể tiến hành kiểm tra đầu ra.
Đầu ra
Trang chủ.html -
Bây giờ nếu bạn truy cập https://127.0.0.1:8000/student/edit/(student object id) / thì bạn sẽ thấy update_view.html của chúng tôi.
Update_view.html -