首先,在你的 Django 项目的某个应用的 views.py 中创建一个视图函数来处理文件上传:
# views.py
from django.shortcuts import render
from django.http import HttpResponse
def upload_file(request):
if request.method == 'POST' and request.FILES['file']:
uploaded_file = request.FILES['file']
# 处理上传的文件,例如保存到服务器或进行其他操作
# 在这里,我们只是简单地返回一个包含文件名的 HttpResponse
return HttpResponse(f'The file "{uploaded_file.name}" has been uploaded successfully.')
return render(request, 'upload_form.html')
在这个例子中,我们检查请求的方法是否为 POST,并且确保有一个名为 'file' 的文件被上传。然后,我们可以访问 request.FILES 字典来获取上传的文件对象。在这个简单的示例中,我们只是返回一个包含文件名的 HttpResponse。
接下来,在你的应用的 urls.py 文件中,配置 URL 模式以调用上述视图:
# urls.py
from django.urls import path
from .views import upload_file
urlpatterns = [
path('upload/', upload_file, name='upload_file'),
]
然后,在你的应用的 templates 目录下创建一个 HTML 模板文件 upload_form.html:
<!-- upload_form.html -->
<!DOCTYPE html>
<html>
<head>
<title>File Upload</title>
</head>
<body>
<h2>File Upload</h2>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file" accept=".pdf, .doc, .docx">
<button type="submit">Upload</button>
</form>
</body>
</html>
在这个例子的表单中,我们使用了 enctype="multipart/form-data",这是处理文件上传的必需属性。accept=".pdf, .doc, .docx" 属性用于限制用户只能上传指定类型的文件。
最后,确保你的项目的主 urls.py 文件包含了你的应用的 URL 配置:
# project/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('myapp/', include('myapp.urls')), # 假设你的应用名为 'myapp'
]
现在,当你访问 http://yourdomain.com/myapp/upload/ 时,将看到一个简单的文件上传表单。用户可以选择文件并点击 "Upload" 按钮进行文件上传。确保适当地配置你的服务器以处理文件上传,并根据需要对上传的文件进行处理。这只是一个简单的例子,实际中可能需要更复杂的文件处理逻辑。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7216/Django