首先,创建一个Django应用,并在该应用中的forms.py文件中定义表单类:
# your_app/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)
然后,在your_app应用下创建一个名为templates的文件夹,其中包含一个名为my_form_template.html的模板文件:
<!-- your_app/templates/my_form_template.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Form</title>
</head>
<body>
<h1>My Custom Form</h1>
<form method="post" action="{% url 'my_view' %}">
{% csrf_token %}
<div>
<label for="{{ form.name.id_for_label }}">Your Name:</label>
{{ form.name }}
{{ form.name.errors }}
</div>
<div>
<label for="{{ form.email.id_for_label }}">Your Email:</label>
{{ form.email }}
{{ form.email.errors }}
</div>
<div>
<label for="{{ form.message.id_for_label }}">Your Message:</label>
{{ form.message }}
{{ form.message.errors }}
</div>
<button type="submit">Submit</button>
</form>
</body>
</html>
在这个模板中,我们使用了{{ form.field_name }}来渲染每个字段,并在每个字段后面添加了错误信息。id_for_label属性用于为标签关联合适的HTML id。
接下来,在视图中使用这个模板:
# your_app/views.py
from django.shortcuts import render
from .forms import MyForm
def my_view(request):
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
# 处理有效的表单数据,可以保存到数据库或进行其他操作
name = form.cleaned_data['name']
email = form.cleaned_data['email']
message = form.cleaned_data['message']
# 这里可以添加其他操作
else:
form = MyForm()
return render(request, 'my_form_template.html', {'form': form})
在这个视图中,我们使用render函数渲染了my_form_template.html模板,并将表单实例传递给模板。
这个例子演示了如何使用模板自定义表单的HTML渲染方式,以及如何在模板中处理表单提交后的错误信息。你可以根据实际需求进行更进一步的自定义。
转载请注明出处:http://www.zyzy.cn/article/detail/7248/Django