📜  Python|在 Django 中上传图片(1)

📅  最后修改于: 2023-12-03 15:19:19.071000             🧑  作者: Mango

Python实现在 Django 中上传图片

在 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 中上传图片的功能已经实现了。