Django Form 组件
Django Form 组件
Django是一个开放源代码的Web框架,同样有一个强大的表单组件,允许开发人员轻松地创建表单并进行验证。在这篇文章中,我们将详细介绍Django Form组件。
表单
表单是用于收集用户在Web应用程序中输入的数据的HTML元素。 在Django中,Form组件是该表单与后端数据存储的桥梁。
建立一个表单
要创建一个表单,您必须从django.forms.Form
类派生出一个新的类。 在这个新类中,您可以定义字段,以及这些字段应该如何验证。
有两种方式来定义表单:
-
手动创建表单字段
``` from django import forms class ContactForm(forms.Form): subject = forms.CharField(max_length=100) message = forms.CharField(widget=forms.Textarea) sender = forms.EmailField() cc_myself = forms.BooleanField(required=False) ``` 这个表单包含4个字段:一个文本字段“subject”(最多100个字符)、多行文本字段“message”、电子邮件字段“sender”以及一个布尔字段“cc_myself”。
-
通过模型自动创建表单字段
``` from django import forms from .models import Contact class ContactForm(forms.ModelForm): class Meta: model = Contact fields = ('name', 'email', 'subject', 'message') ``` 当您有一个与表单相关联的模型时,这是一种更方便的方法。 `Meta`类定义了表单从模型中使用的字段。
表单验证
表单验证是确保表单数据有效性的过程。 在Django中,表单验证在提交表单时自动运行。
要定义表单验证,请为字段添加验证。您可以使用默认验证器,例如min_length
,max_length
和required
,或编写自己的验证器。
```
from django import forms
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.CharField(widget=forms.Textarea)
sender = forms.EmailField()
cc_myself = forms.BooleanField(required=False)
def clean_subject(self):
subject = self.cleaned_data['subject']
if "some bad content" in subject:
raise forms.ValidationError("Content contained inappropriate words")
return subject
```
在这个例子中,“clean_subject”是`clean`方法中的一个字段特定的验证,用于检查还有不良字词。 如果包含不良字词,它将抛出`ValidationError`异常。
表单呈现
当表单定义完毕并验证通过后,您需要将其呈现给用户。 可以使用模板系统和视图来完成这一操作。
```
from django.shortcuts import render
from .forms import ContactForm
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
# process the data in form.cleaned_data as required
return HttpResponseRedirect('/thanks/')
else:
form = ContactForm()
return render(request, 'contact.html', {'form': form})
```
在视图中,您可以使用`POST`和`GET`请求方式和呈现模板使表单呈现在web应用程序中。
结论
Django的表单组件是一种强大的工具,可以帮助开发人员轻松地处理针对用户输入数据的验证和处理。通过本文的介绍,您可以轻松地创建表单、定义验证和在web应用程序中呈现表单。