下面我将详细讲解Django构建模板form表单的两种方法,并提供两个示例。
Django模板默认提供了form表单的渲染,方便我们快速地渲染出一个表单。
使用此方法时,需要在视图函数中定义一个form
变量,并为其赋值为一个forms.Form
对象(也可以是子类或其他表单类)。然后在模板中,使用form.as_p
(将表单渲染为HTML的P段落)等方法将form表单渲染出来。
以下是一个示例:
from django import forms
from django.shortcuts import render
class MyForm(forms.Form):
name = forms.CharField(max_length=30)
email = forms.EmailField()
message = forms.CharField(widget=forms.Textarea())
def my_view(request):
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
# 处理有效的表单提交
pass
else:
form = MyForm()
return render(request, 'my_template.html', {'form': form})
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="提交">
</form>
如果模板默认提供的表单不符合你的需求,你可以使用方法二自定义表单的模板。
使用此方法时,需要在模板中手动定义表单的每一个输入字段,以及使用{% csrf_token %}
添加Django的CSRF保护。
以下是一个示例:
仍然使用上述的MyForm
表单类。
<form method="post">
{% csrf_token %}
<label for="{{ form.name.id_for_label }}">姓名:</label>
{{ form.name }}
<br>
<label for="{{ form.email.id_for_label }}">邮箱:</label>
{{ form.email }}
<br>
<label for="{{ form.message.id_for_label }}">留言:</label>
{{ form.message }}
<br>
<input type="submit" value="提交">
</form>
在这个示例中我们手动渲染了表单的每一个输入字段,然后将id_for_label
属性添加到每一个<label>
标签中,用于与输入字段相应连。
通过方法二,你可以自定义表单的每一个输入字段的样式、布局,并添加额外的HTML属性等。
本文链接:http://task.lmcjl.com/news/15709.html