1. 定义表单类:
创建一个Form类的过程非常简单。通常,你需要创建一个继承自django.forms.Form的类,并在其中定义表单需要的字段。字段对应表单中的输入元素,可以是文本框、复选框、下拉框等。
# forms.py
from django import forms
class MyForm(forms.Form):
name = forms.CharField(label='Your Name', max_length=100)
email = forms.EmailField(label='Your Email')
message = forms.CharField(label='Your Message', widget=forms.Textarea)
在这个例子中,MyForm类有三个字段:name、email、message。
2. 字段的属性和验证规则:
在定义字段时,你可以为每个字段添加一些属性和验证规则。例如,max_length属性规定了输入字符串的最大长度,EmailField是一个专门用于验证电子邮件地址格式的字段。
name = forms.CharField(label='Your Name', max_length=100)
email = forms.EmailField(label='Your Email')
3. 自定义验证规则:
除了内置的验证规则外,你还可以通过在clean_<field_name>()方法中自定义验证规则。这个方法会在整个表单验证完成后调用,用于执行一些自定义的验证逻辑。
def clean_email(self):
email = self.cleaned_data['email']
# 自定义验证逻辑
if not email.endswith('@example.com'):
raise forms.ValidationError('Email must be from example.com domain.')
return email
4. 自定义小部件(Widgets):
通过使用不同的小部件,你可以控制字段在HTML中的呈现方式。例如,使用forms.Textarea小部件将字段渲染为多行文本框。
message = forms.CharField(label='Your Message', widget=forms.Textarea)
5. 使用cleaned_data获取验证后的数据:
在视图中,当表单通过验证时,你可以通过cleaned_data属性获取验证后的数据。
if form.is_valid():
name = form.cleaned_data['name']
email = form.cleaned_data['email']
message = form.cleaned_data['message']
6. 渲染表单:
在HTML模板中,你可以使用{{ form.as_p }}、{{ form.as_table }}、{{ form.as_ul }}等方法将表单渲染为HTML。
<form method="post" action="{% url 'my_view' %}">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Submit</button>
</form>
这些方法会自动生成适当的HTML代码,包括表单标签、输入元素和可能的错误信息。
Django的Form类提供了很多方便的功能,使得表单的创建和处理变得非常简单。通过了解这些基本概念,你可以更好地利用Django表单来构建用户友好的交互。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7247/Django