Django 文件上传表单
Django 提供了很方便的文件上传表单,以下是详细的使用步骤和代码演示:
- 首先,在 forms.py 文件中定义一个表单类,包含一个文件上传字段:
from django import forms class FileUploadForm(forms.Form): file = forms.FileField()
- 然后,在 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})
- 在 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 会将表单渲染为一个包含每个字段的
元素的列表。
- 最后,在 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)
相关文章