from django import forms
class UploadFileForm(forms.Form):
title = forms.CharField(max_length=50)
file = forms.FileField()
这段代码是使用 Django 框架创建的一个表单类 `UploadFileForm`,它继承自 `forms.Form`。这个表单类用于处理文件上传和标题输入。下面是对这段代码的详细解释:
1. `from django import forms`:
这行代码导入了 Django 的 `forms` 模块,它包含了用于创建表单的类和函数。
2. `class UploadFileForm(forms.Form)`:
定义了一个名为 `UploadFileForm` 的类,它继承自 `forms.Form`。这个类将用于创建一个表单,用于在 Django 视图中处理用户输入。
3. `title = forms.CharField(max_length=50)`:
这是表单中的一个字段,名为 `title`。它是一个字符字段(`CharField`),用于输入字符串。`max_length=50` 参数限制了输入的最大长度为50个字符。
4. `file = forms.FileField()`:
这是表单中的另一个字段,名为 `file`。它是一个文件字段(`FileField`),用于上传文件。这个字段没有指定最大文件大小或其他限制,所以它将使用 Django 默认的文件上传设置。
### 举例说明:
假设你正在开发一个网站,用户可以上传他们的简历。你可以使用这个表单来收集用户的简历文件和简历的标题。下面是一个简单的视图和模板示例,展示如何使用这个表单:
#### 视图(views.py):
from django.shortcuts import render
from .forms import UploadFileForm
def upload_file(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
# 处理上传的文件和标题
title = form.cleaned_data['title']
file = form.cleaned_data['file']
# 保存文件和标题到数据库或其他存储
# ...
return render(request, 'upload_success.html', {'title': title})
else:
form = UploadFileForm()
return render(request, 'upload.html', {'form': form})
#### 模板(upload.html):
<!DOCTYPE html>
<html>
<head>
<title>Upload File</title>
</head>
<body>
<h1>Upload your file</h1>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Upload</button>
</form>
</body>
</html>
这个例子中,当用户访问上传页面并提交表单时,Django 会处理 POST 请求。如果表单数据有效,它会处理上传的文件和标题,然后重定向到一个成功页面。如果请求是 GET 请求,它会显示一个空表单供用户填写。`enctype="multipart/form-data"` 是表单必须包含的属性,以便能够上传文件。`{% csrf_token %}` 是一个模板标签,用于防止跨站请求伪造攻击。