Django文件上传完整教程

一、设置路径

首先,在settings.py 文件的中设置 MEDIA_ROOT 和 MEDIA_URL 两个参数。其中MEDIA_ROOT 表示文件存储的根目录,MEDIA_URL 表示通过浏览器访问这些文件的URL前缀。

 MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

MEDIA_URL = '/media/'

二、建表

为了保存上传的文件,我们需要在项目中定义一个文件模型。在models.py文件中进行定义。此处以保存图片文件为例:

 class Image(models.Model):
    
    image = models.ImageField(upload_to='images/')

    def __str__(self):
        return f'{self.id}'

其中的 upload_to 参数用于设置文件存储的子目录。如果你不需要对文件进行二次分类,则可以直接写为 upload_to=’/’

三、使用表单进行上传

在模板文件中编写文件上传表单。

 <form method="POST" enctype="multipart/form-data" action="{% url 'upload' %}">
    {% csrf_token %}
    <input type="file" name="image">
    <input type="submit" value="上传">
</form>

四、定义视图

使用Django自带的视图函数进行文件上传处理。首先需要引用两个库:from django.shortcuts import render 和 from django.conf import settings

然后可以定义一个新的视图函数进行文件上传处理:

 def upload(request):
    if request.method == 'POST':
        image = request.FILES.get('image')
        
        if image:
            new_image = Image()
            new_image.image = image
            new_image.save()

            return HttpResponse('文件上传成功!')
    else:
        return render(request, 'upload.html')

五、渲染结果

在模板文件中渲染上传结果。以下代码用于展示上传成功的图片:

 <div>
    {% for img in images %}
        <img src="{{ img.image.url }}" height="300" />
    {% endfor %}
</div>

六、完整代码示例

 # settings.py
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

MEDIA_URL = '/media/'

# models.py
class Image(models.Model):
    
    image = models.ImageField(upload_to='images/')

    def __str__(self):
        return f'{self.id}'

# upload.html
<form method="POST" enctype="multipart/form-data" action="{% url 'upload' %}">
    {% csrf_token %}
    <input type="file" name="image">
    <input type="submit" value="上传">
</form>
<div>
    {% for img in images %}
        <img src="{{ img.image.url }}" height="300" />
    {% endfor %}
</div>

# views.py
from django.shortcuts import render
from django.conf import settings
from .models import Image
from django.http import HttpResponse

def upload(request):
    if request.method == 'POST':
        image = request.FILES.get('image')
        
        if image:
            new_image = Image()
            new_image.image = image
            new_image.save()

            return HttpResponse('文件上传成功!')
    else:
        images = Image.objects.all()
        return render(request, 'upload.html', {'images': images})

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/238790.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:13
下一篇 2024-12-12 12:13

相关推荐

  • MQTT使用教程

    MQTT是一种轻量级的消息传输协议,适用于物联网领域中的设备与云端、设备与设备之间的数据传输。本文将介绍使用MQTT实现设备与云端数据传输的方法和注意事项。 一、准备工作 在使用M…

    编程 2025-04-29
  • Python3.6.5下载安装教程

    Python是一种面向对象、解释型计算机程序语言。它是一门动态语言,因为它不会对程序员提前声明变量类型,而是在变量第一次赋值时自动识别该变量的类型。 Python3.6.5是Pyt…

    编程 2025-04-29
  • 如何在Java中拼接OBJ格式的文件并生成完整的图像

    OBJ格式是一种用于表示3D对象的标准格式,通常由一组顶点、面和纹理映射坐标组成。在本文中,我们将讨论如何将多个OBJ文件拼接在一起,生成一个完整的3D模型。 一、读取OBJ文件 …

    编程 2025-04-29
  • Deepin系统分区设置教程

    本教程将会详细介绍Deepin系统如何进行分区设置,分享多种方式让您了解如何规划您的硬盘。 一、分区的基本知识 在进行Deepin系统分区设置之前,我们需要了解一些基本分区概念。 …

    编程 2025-04-29
  • 打造照片漫画生成器的完整指南

    本文将分享如何使用Python编写一个简单的照片漫画生成器,本文所提到的所有代码和技术都适用于初学者。 一、环境准备 在开始编写代码之前,我们需要准备一些必要的环境。 首先,需要安…

    编程 2025-04-29
  • 写代码新手教程

    本文将从语言选择、学习方法、编码规范以及常见问题解答等多个方面,为编程新手提供实用、简明的教程。 一、语言选择 作为编程新手,选择一门编程语言是很关键的一步。以下是几个有代表性的编…

    编程 2025-04-29
  • Python中文版下载官网的完整指南

    Python是一种广泛使用的编程语言,具有简洁、易读易写等特点。Python中文版下载官网是Python学习和使用过程中的重要资源,本文将从多个方面对Python中文版下载官网进行…

    编程 2025-04-29
  • Qt雷达探测教程

    本文主要介绍如何使用Qt开发雷达探测程序,并展示一个简单的雷达探测示例。 一、环境准备 在开始本教程之前,需要确保你的开发环境已经安装Qt和Qt Creator。如果没有安装,可以…

    编程 2025-04-29
  • 服务器安装Python的完整指南

    本文将为您提供服务器安装Python的完整指南。无论您是一位新手还是经验丰富的开发者,您都可以通过本文轻松地完成Python的安装过程。以下是本文的具体内容: 一、下载Python…

    编程 2025-04-29
  • 猿编程python免费全套教程400集

    想要学习Python编程吗?猿编程python免费全套教程400集是一个不错的选择!下面我们来详细了解一下这个教程。 一、课程内容 猿编程python免费全套教程400集包含了从P…

    编程 2025-04-29

发表回复

登录后才能评论