Django ModelForm

2023-04-11 00:00:00 django ModelForm

Django ModelForm是Django框架提供的一种方便快捷的表单生成工具,它可以根据指定的Model自动生成表单,并自动帮助修正数据类型、数据验证、保存数据等操作。

以下是一个简单的例子,我们创建一个Model叫做“Person”,它包含了一个名字(name)和一个年龄(age):

from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=50)
    age = models.IntegerField()

然后,我们可以定义一个ModelForm来生成一个包含name和age字段的表单:

from django import forms
from .models import Person

class PersonForm(forms.ModelForm):
    class Meta:
        model = Person
        fields = ['name', 'age']

在这个例子中,我们使用了Django内置的ModelForm类,并通过Meta类指定了要使用的Model和要生成的字段。fields属性是一个列表,它包含了我们要在表单中显示的字段。

接下来,我们可以在视图函数中使用该表单来展现页面和处理表单提交:

from django.shortcuts import render, redirect
from .forms import PersonForm

def add_person(request):
    if request.method == 'POST':
        form = PersonForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('person_list')
    else:
        form = PersonForm()
    return render(request, 'add_person.html', {'form': form})

在这个例子中,我们首先检查请求的方法是否是POST,如果是POST,则读取表单数据并使用is_valid()方法检查表单数据的有效性;如果表单数据有效,则调用save()方法保存表单数据,并重定向到列表页面。如果请求方法不是POST,我们则展现一个空的表单页面进行表单填写。

在模板中,我们可以按如下方式展现表单:

<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="提交">
</form>

这里使用了form.as_p方法将表单以段落的形式展现。当我们提交表单时,Django框架会根据定义的Model和ModelForm自动完成数据的验证和保存,而无需手动编写大量的表单处理代码。

相关文章