Django之文件上传
Django,文件,上传
2025-03-13 21:27:21 时间
文件上传的使用场景
- 用户可以通过浏览器将图片等文件上传至网站
- 用户上传头像、上传PDF、TXT等文件
上传规范 -前端HTML
文件上传必须以Post
的方式进行提交,表单<form>
中的文件上传时候必须带有enctype="multipart/form-data"
时候 才会包含文件内容数据。
表单单重使用<input type="file" name="xxx">
进行上传文件
上传规范 -后端
试图函数中,用request.FILES
取文件框里的内容
file=request.FILES['xxx']
- FILES的
key
对应页面file框中的name
的值 - file绑定文件流对象
- file.name 文件名
- file.file文件的字节流数据
配置文件的访问路径和存储路径,在setting.py
中设置MEDIA相关配置,Django把用户上传的 资源统称为media资源。
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
MEDIA_URL
和MEDIA_ROOT
需要手动绑定
# 在主路由当中
from django.contrib import admin
from django.urls import path,include
from index import views as index_views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('user/',include('user.urls')),
path('note/',include('note.urls')),
path('index/',index_views.index_views)
]
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
等价于做了MEDIA_URL
开头的路由,Django接到请求MEDIA_URL
后去MEDIA_ROOT
查找资源
文件写入方案:借助ORM操作
字段:FileField(upload='子目录名')
# 先创建一个模型类
from django.db import models
class Upload_info(models.Model):
filename = models.CharField(verbose_name="文件名称",max_length=11)
picture = models.FileField(upload_to='files')
# 上传文件的视图函数
def upload_views(request):
if request.method == 'GET':
return render(request,'user/upload.html')
elif request.method == 'POST':
# 取上传文件的名字
title = request.POST['title']
up_file = request.FILES['file']
Upload_info.objects.create(title=title,picture=up_file)
return HttpResponse("文件上传成功")
相关文章
- Django之文件上传
- Python进阶32-Django forms组件
- Django的ORM操作-更新数据
- 一次完整的 Django 项目的迁移,有关 MySQL 数据库的导出与导入
- pycharm怎么运行django项目_django怎么用
- Django的聚合查询与原生操作
- Python进阶37-smtp及Django发邮件
- Python项目部署-使用Nginx部署Django项目
- Python进阶35-Django Auth组件
- Django的ORM简介
- [博客搭建] 通过用户邮箱认证来介绍 django-allauth 的使用思路
- Django-缓存内容
- Django Web 极简教程(六)- Django Form(Part A)
- Django 中使用 ajax 请求的正确姿势
- Django的ORM操作-删除数据
- pycharm中安装django_pycharm环境配置教程
- vue django mysql_Python MySQL
- Python进阶28-Django 模板层(Jinja2)
- Python项目52-Django封装支付宝支付
- 使用pycharm创建Django项目[通俗易懂]