django简单上传文件

这篇博客介绍了如何在Django中实现简单的文件上传,不使用Form表单。主要涉及settings文件配置、models文件中ImageField/FileField的使用、views文件中获取文件对象的方法,以及如何设置urls.py使得可以通过浏览器直接访问上传的文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里使用django简单上传文件,不使用Form表单

  • 前端页面

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<form method="post" action="" enctype="multipart/form-data">
  {% csrf_token %}
  <input type="file" name="file">
  <input type="submit" value="submit">
</form>
</body>
</html>

传文件一定要指定 form标签的属性enctype为 multipart/form-data

  • 后端接收

1.settings文件

先设置接收文件的路径

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

2.models文件

模型字段可以选择ImageField或者FileField,模型字段参数upload_to为上传路径
例如 **%Y/%m/%d/**将会自动存放到 **/media/年/月/日/**文件夹下

from django.db import models

# Create your models here.

class MyFile(models.Model):
    image = models.ImageField(upload_to='%Y/%m/%d/')

3.views文件

通过**request.FILES.get(‘表单字段名’)**获取文件对象,表单字段名必须跟html的input标签属性name一致,否则会获取不到文件对象

from django.shortcuts import render
from .models import MyFile

# Create your views here.
def testUpload(request):
    if request.method == 'GET':
        return render(request, 'fileUpload_demo/upload.html')
    elif request.method == 'POST':
        print type(request.FILES.get('file'))
        file_ = MyFile(image=request.FILES.get('file'))
        file_.save()
        return render(request, 'fileUpload_demo/upload.html')

4. 通过浏览器直接访问

到第三步,已经可以使用页面上传文件了,如果希望浏览器直接访问文件,可以在urls.py设置访问路径

from django.conf import settings
from django.conf.urls import url, include
from django.conf.urls.static import static


urlpatterns = [
    ......
] 
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

加上最后一步可以在浏览器直接访问文件


大家有问题可以微信交流一下~~
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值