Django 文件上传表单示例

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 %}` 是一个模板标签,用于防止跨站请求伪造攻击。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值