📅  最后修改于: 2023-12-03 15:19:19.071000             🧑  作者: Mango
在 Django 开发中,图片上传是一个常见的需求。这篇文章将介绍如何使用 Python 实现在 Django 中上传图片的功能。
在 settings.py 文件中,需要添加以下配置:
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
其中,MEDIA_ROOT
指定上传文件的路径,MEDIA_URL
指定上传文件的 URL 地址。
在 forms.py 文件中,我们需要定义一个表单,用于上传图片。代码如下:
from django import forms
class UploadImageForm(forms.Form):
image = forms.ImageField()
其中,ImageField
是 Django 自带的上传图片字段。
在 views.py 文件中,我们需要编写一个视图函数,处理上传图片的逻辑。代码如下:
from django.shortcuts import render
from .forms import UploadImageForm
def upload_image(request):
if request.method == 'POST':
form = UploadImageForm(request.POST, request.FILES)
if form.is_valid():
# 处理上传的图片
file = form.cleaned_data['image']
# 将上传的图片保存到指定路径
with open(os.path.join(settings.MEDIA_ROOT, file.name), 'wb') as f:
for chunk in file.chunks():
f.write(chunk)
return render(request, 'upload_image.html', {'message': '图片上传成功'})
else:
form = UploadImageForm()
return render(request, 'upload_image.html', {'form': form})
其中,request.POST
获取表单提交的 POST 数据,request.FILES
获取上传的文件。
最后,我们需要编写一个模板,用于显示上传图片的表单。代码如下:
{% extends 'base.html' %}
{% block content %}
<h1>上传图片</h1>
{% if message %}
<p>{{ message }}</p>
{% endif %}
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">上传</button>
</form>
{% endblock %}
其中,form.as_p
将表单对象渲染成 HTML 格式。
至此,Django 中上传图片的功能已经实现了。