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

Làm cách nào để thêm một UpdateView trong Django?

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 thành công.html.

Trong home.html 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 -

Làm cách nào để thêm một UpdateView trong Django?

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 -

Làm cách nào để thêm một UpdateView trong Django?