创建表单
Django中表单是通过 forms 模块创建的。在创建表单之前,你需要定义表单的字段和验证规则。下面是一个简单的表单定义示例:
# forms.pyfromdjango import formsclassContactForm(forms.Form):name = forms.CharField(max_length=100)email = forms.EmailField()message = forms.CharField(widget=forms.Textarea)
在这个示例中,我们定义了一个名为 ContactForm 的表单类,它有三个字段:name、email 和 message。CharField 和 EmailField 分别用于文本输入和电子邮件地址输入。Textarea 是一个多行文本输入框。
渲染表单
要在Django中呈现表单,你需要将表单实例传递给模板。在模板中,你可以使用Django的模板语言(DTL)来呈现表单字段。下面是一个简单的示例,展示如何呈现表单:
<!-- contact.html --><formmethod="post"> {% csrf_token %}<div><labelfor="{{ form.name.id_for_label }}">姓名:</label> {{ form.name }}</div><div><labelfor="{{ form.email.id_for_label }}">电子邮件地址:</label> {{ form.email }}</div><div><labelfor="{{ form.message.id_for_label }}">信息:</label> {{ form.message }}</div><buttontype="submit">提交</button></form>
在这个示例中,我们使用 form 变量呈现表单字段。id_for_label 属性用于呈现 label 元素的 for 属性。csrf_token 标签用于防止跨站请求伪造攻击。
处理表单
要处理提交的表单数据,你需要在视图函数中编写代码来验证和处理表单数据。如果表单数据有效,则可以执行必要的操作(例如保存数据到数据库),并重定向到成功页面。如果表单数据无效,则可以呈现一个错误页面或重新呈现表单以进行修正。下面是一个简单的表单处理视图函数:
# views.pyfrom django.shortcuts import render, redirectfrom .forms import ContactFormdefcontact(request):if request.method == 'POST': form = ContactForm(request.POST)if form.is_valid():# 处理表单数据return redirect('success')else: form = ContactForm()return render(request, 'contact.html', {'form': form})defsuccess(request):return render(request, 'success.html')
在这个示例中,我们定义了一个名为 contact 的视图函数,它处理 ContactForm 表单的提交。如果请求方法为 POST,则我们使用表单数据创建一个表单实例。然后,我们验证表单数据是否有效。如果表单数据有效,我们执行必要的操作(例如保存数据)