Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

จะเพิ่ม UpdateView ใน Django ได้อย่างไร?


UpdateView เป็นมุมมองใน Django ซึ่งใช้เพื่ออัปเดตข้อมูลโมเดลจากส่วนหน้า เป็นมุมมองในตัวที่นำไปใช้ได้ง่าย ทำหน้าที่เหมือนหน้าผู้ดูแลระบบในการอัปเดตมุมมอง ในบทความนี้ เราจะยกตัวอย่างและสาธิตวิธีใช้ UpdateView ใน Django

ขั้นแรก สร้างโปรเจ็กต์ Django และแอพ ฉันสร้างโครงการด้วยชื่อ "tutorial11" และแอปชื่อ "modelFormsDemo" .

มาทำสิ่งพื้นฐานกัน

เพิ่มแอปใน settings.py

INSTALLED_APPS+ = ['modelFormsDemo']

ใน urls.py ของโปรเจ็กต์ รวม URL ของแอปด้วย

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

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

ใน urls.py ของแอป เพิ่มต่อไปนี้ −

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

ที่นี่เราสร้างสาม URL; อันหนึ่งสำหรับเรนเดอร์ฟรอนต์เอนด์ อันหนึ่งสำหรับ UpdateView สำหรับการอัปเดต และความสำเร็จสำหรับการเปลี่ยนเส้นทางหลังจากอัพเดต

ตัวอย่าง

ใน models.py , เพิ่มสิ่งนี้ −

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)

ที่นี่เราสร้างแบบจำลองที่เรียบง่าย เป็นโมเดลพื้นฐาน

ใน views.py , เพิ่มต่อไปนี้ −

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

ที่นี่เราไม่ได้ทำอะไรที่ซับซ้อน เราเพิ่งตั้งชื่อโมเดล ฟิลด์ และเทมเพลตที่เราจะแสดงผล นอกจากนี้เรายังกำหนดฟังก์ชันที่จะบอกสิ่งที่ต้องดำเนินการหลังจากอัปเดต

สร้าง forms.py ในไดเรกทอรีแอปและเพิ่มบรรทัดต่อไปนี้ -

from django import forms
from .models import Student

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

ที่นี่เราเพียงแค่สร้างแบบฟอร์มที่เราจะแสดงผล

ตอนนี้สร้าง เทมเพลต โฟลเดอร์และเพิ่มสามไฟล์ภายในนั้น home.html, update_view.html และ success.html.

ใน 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>

ใน success.html ให้เพิ่มบรรทัดต่อไปนี้ −

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

ด้วยเหตุนี้ทุกอย่างจึงถูกตั้งค่า ตอนนี้คุณสามารถดำเนินการตรวจสอบผลลัพธ์ได้

ผลลัพธ์

Home.html

จะเพิ่ม UpdateView ใน Django ได้อย่างไร?

ตอนนี้ ถ้าคุณไปที่ https://127.0.0.1:8000/student/edit/(student object id)/ คุณจะเห็น update_view.html ของเรา

Update_view.html

จะเพิ่ม UpdateView ใน Django ได้อย่างไร?