如何在Django中添加UpdateView?
UpdateView是Django中用于从前端更新任何模型数据的视图。它是一个内置的视图,可以很容易地应用。它像更新视图中的管理页面。在本文中,我们将举一个例子并演示如何在Django中使用UpdateView。
首先,创建一个Django项目和一个应用程序。我使用名称为 “tutorial11” 的项目和名称为 “modelFormsDemo” 的应用程序进行了创建。
现在,让我们做一些基本的事情。
在 settings.py 中添加应用程序−
INSTALLED_APPS+ = ['modelFormsDemo']
在项目的 urls.py 中,包括应用程序的urls。
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,一个用于更新后重定向的成功URL。
例子
在 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>成功</h2>
</body>
</html>
有了这些,一切都设置好了。现在您可以继续检查输出。
输出
Home.html −
现在,如果您进入 http://127.0.0.1:8000/student/edit/(student object id)/,则会看到我们的 update_view.html。
Update_view.html −