在 Django 中,表单增删改查通常是指使用 Django 的模型(Model)和表单(Form)来实现对数据库数据的操作。下面将介绍常见的表单增删改查方法,并结合示例代码进行描述。
首先,我们需要定义一个 Django 模型(Model)类来表示数据库中的数据表。每个模型类都是一个 Python 类,它继承自 django.db.models.Model
。在模型类中,我们定义各个字段(Field),每个字段对应数据库表中的一列数据。示例代码如下:
# models.py
from django.db import models
class Item(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
price = models.DecimalField(max_digits=8, decimal_places=2)
接下来,我们需要创建一个 Django 表单(Form)类,它用于处理用户提交的数据。表单类继承自 django.forms.Form
或 django.forms.ModelForm
,前者用于非数据库相关的表单,后者用于与模型相关联的表单。示例代码如下:
# forms.py
from django import forms
from .models import Item
class ItemForm(forms.ModelForm):
class Meta:
model = Item
fields = ['name', 'description', 'price']
视图函数处理用户的请求,并根据需要执行数据库操作。视图函数通常是通过 URL 映射调用的。下面是一些示例视图函数,用于展示表单、保存表单数据、删除数据以及查询数据:
# views.py
from django.shortcuts import render
from .forms import ItemForm
def add_item(request):
form = ItemForm()
return render(request, 'add_item.html', {'form': form})
在上述示例中,add_item
视图函数负责显示一个空的表单页面,供用户输入数据。
# views.py
from django.shortcuts import render, redirect
from .forms import ItemForm
def add_item(request):
if request.method == 'POST':
form = ItemForm(request.POST)
if form.is_valid():
form.save()
return redirect('item_list')
else:
form = ItemForm()
return render(request, 'add_item.html', {'form': form})
在上述示例中,add_item
视图函数通过 POST 请求接收表单数据,并在表单有效时保存数据到数据库。
# views.py
from django.shortcuts import render, redirect
from .models import Item
def delete_item(request, item_id):
item = Item.objects.get(pk=item_id)
item.delete()
return redirect('item_list')
在上述示例中,delete_item
视图函数根据给定的 item_id
从数据库中获取对应的数据项,并将其删除。
# views.py
from django.shortcuts import render
from .models import Item
def item_list(request):
items = Item.objects.all()
return render(request, 'item_list.html', {'items': items})
在上述示例中,item_list
视图函数从数据库中获取所有数据项,并将其传递给 item_list.html
模板进行显示。
最后,我们需要编写 HTML 模板来呈现表单和数据。这些模板将在视图函数中使用。以下是一个简化的模板示例:
<!-- add_item.html -->
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Save</button>
</form>
<!-- item_list.html -->
<ul>
{% for item in items %}
<li>
{{ item.name }} - {{ item.description }} - {{ item.price }}
<a href="{% url 'delete_item' item.id %}">Delete</a>
</li>
{% endfor %}
</ul>
在上述示例中,add_item.html
模板用于显示表单,item_list.html
模板用于显示查询的数据列表,并提供删除链接。
综上所述,通过使用 Django 的模型、表单、视图和模板,我们可以实现对数据库数据的增删改查操作。在上述示例中,我们展示了创建模型类、表单类、视图函数以及相应的模板,并解释了它们各自的作用和实现方式。这样,我们可以构建一个基本的增删改查功能的应用程序。