Django 表单是一个功能强大的组件,用于处理用户输入和验证。
表单应用
Django 表单主要用于以下场景:
- 用户输入验证:确保用户提交的数据符合期望的格式。
- 数据清洗:自动清洗用户输入,防止跨站脚本(XSS)等安全问题。
- 交互式表单生成:根据模型(Model)自动生成表单字段。
- 复杂逻辑处理:处理表单中的复杂逻辑,如条件渲染、动态更新等。
表单示例
假设我们正在创建一个简单的用户反馈表单,该表单包括用户姓名、电子邮件和反馈内容。
步骤 1: 创建表单类
在 forms.py
文件中定义一个表单类:
# myapp/forms.py
from django import forms
class FeedbackForm(forms.Form):
name = forms.CharField(label='Your name', max_length=100)
email = forms.EmailField(label='Your email')
message = forms.CharField(widget=forms.Textarea, label='Your message')
这里定义了三个字段:name
、email
和 message
。CharField
用于输入字符串,EmailField
用于输入电子邮件地址,并且会自动验证电子邮件格式,Textarea
用于多行文本输入。
步骤 2: 创建视图处理表单
在 views.py
中创建视图来处理表单的显示和提交:
# myapp/views.py
from django.shortcuts import render
from .forms import FeedbackForm
def feedback(request):
if request.method == 'POST':
form = FeedbackForm(request.POST)
if form.is_valid():
# 处理表单数据,例如保存到数据库或发送邮件
# name = form.cleaned_data['name']
# email = form.cleaned_data['email']
# message = form.cleaned_data['message']
# 可以在这里添加代码来处理这些数据
return render(request, 'feedback/thanks.html')
else:
form = FeedbackForm()
return render(request, 'feedback/form.html', {
'form': form})
步骤 3: 创建模板
创建两个模板文件:一个用于显示表单,另一个用于显示提交后的感谢信息。
form.html
:
<!-- myapp/templates/feedback/form.html -->
<!DOCTYPE html>
<html>
<head>
<title>Feedback Form</title>
</head>
<body>
<h1>Leave us your feedback</h1>
<form method="post">
{% csrf_token %}
{
{ form.as_p }}
<button type="submit">Submit</button>
</form>
</body>
</html>
thanks.html
:
<!-- myapp/templates/feedback/thanks.html -->
<!DOCTYPE html>
<html>
<head>
<title>Thank You</title>
</head>
<body>
<h1>Thank you for your feedback!</h1>
</body>
</html>
步骤 4: 配置 URL
在 urls.py
中添加 URL 规则,以便用户可以访问表单:
# myapp/urls.py
from django.urls import path
from .views import feedback
urlpatterns = [
path('feedback/', feedback, name='feedback'),
]
步骤 5: 运行服务器并测试表单
运行Django开发服务器:
python manage.py runserver
访问 http://127.0.0.1:8000/feedback/
来查看表单,并提交一些数据。