Django 文件上传表单

2023-04-11 00:00:00 django 表单 文件上传

Django 提供了很方便的文件上传表单,以下是详细的使用步骤和代码演示:

  1. 首先,在 forms.py 文件中定义一个表单类,包含一个文件上传字段:
from django import forms

class FileUploadForm(forms.Form):
    file = forms.FileField()
  1. 然后,在 views.py 文件中,处理表单提交并保存上传的文件:
from django.shortcuts import render

def file_upload(request):
    if request.method == 'POST':
        form = FileUploadForm(request.POST, request.FILES)
        if form.is_valid():
            uploaded_file = form.cleaned_data['file']
            # 保存上传的文件
            with open('uploads/' + uploaded_file.name, 'wb+') as destination:
                for chunk in uploaded_file.chunks():
                    destination.write(chunk)
            return render(request, 'file_upload.html', {'form': form, 'message': '上传成功'})
    else:
        form = FileUploadForm()
    return render(request, 'file_upload.html', {'form': form})
  1. 在 templates 文件夹中,创建一个名为 file_upload.html 的模板文件,包含以下代码:
{% if message %}
<p>{{ message }}</p>
{% endif %}
<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_p }}
    <button type="submit">上传文件</button>
</form>

其中,form.as_p 会将表单渲染为一个包含每个字段的

元素的列表。

  1. 最后,在 urls.py 文件中,配置文件上传的路由:
from django.urls import path
from .views import file_upload

urlpatterns = [
    path('file_upload/', file_upload, name='file_upload'),
]

这样,访问 /file_upload/ 页面就会显示一个包含上传文件表单的页面,用户可在其中选择要上传的文件,然后提交表单完成文件上传。同时需要在 settings.py 文件中进行上传文件大小的设置:

# 限制上传文件大小
FILE_UPLOAD_MAX_MEMORY_SIZE = 10485760  # 10 MB

最后,如果要使用一个字符串作为范例,可以将上传的文件名设置成 pidancode.com 或 皮蛋编程:

with open('uploads/pidancode.com', 'wb+') as destination:
    for chunk in uploaded_file.chunks():
        destination.write(chunk)
with open('uploads/皮蛋编程', 'wb+') as destination:
    for chunk in uploaded_file.chunks():
        destination.write(chunk)

相关文章