栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django实现文件上传

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django实现文件上传

文章目录
  • 一、Django如何实现文件上传?
  • 二、使用步骤
    • 1.在setting.py中添加如下代码
    • 2.models.py中新建包含FileField的model
    • 3.urls.py中指定上传文件根目录
    • 4.在HTML文件中添加上传文件的控件
    • 5.在views.py中获取参数并写入数据库
    • 6.最后就可以下面的位置上看到传过来的传文件了
  • 总结


一、Django如何实现文件上传?

Django是python用于开发网站的一种常用框架,因此不可避免的会遇到文件及图片上传的相关问题,下面我来简单讲解通过POST表单上传文件的实现过程。

二、使用步骤 1.在setting.py中添加如下代码

代码如下(示例):

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

文件上传之后都会存储在该路径下,直接copy就好

2.models.py中新建包含FileField的model

代码如下(示例):

import uuid
import datetime
from django.db import models

def image_upload_to(instance, filename):#文件的时间戳
    # print(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
    id = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S").replace('-','').replace(' ','').replace(':','')
    filename = filename.replace('.csv','_')+id+'.csv'
    # print(filename)
    return 'file/+{filename}'.format(uuid=uuid.uuid4().hex, filename=filename)

class Processlog(models.Model):
    '''日志单模型类'''
    file_name = models.FileField(upload_to=image_upload_to,null=False,blank=False)
    upload_time = models.DateTimeField(auto_now_add=True)
    download_time = models.DateTimeField(null=True,blank=True)
    username = models.ForeignKey(User, on_delete=models.CASCADE, to_field='username')

image_upload_to修改了文件上传之后的文件名(在文件末尾加上时间戳),以及上传的路径(file/)。
必须包含FileField的字段,该字段用于记录文件上传的位置,upload_to也可以直接指定,例如(upload_to=‘file/’)


3.urls.py中指定上传文件根目录

代码如下(示例):

from django.conf.urls import  url
from processes import views
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    url(r'^uploadFileSubmit$', views.uploadFileSubmit),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) #这是关键
4.在HTML文件中添加上传文件的控件

代码如下(示例):

{% csrf_token %}{{form.as_p}}

enctype=“multipart/form-data”
{% csrf_token %}{{form.as_p}}
这两句是关键,一定要有,不然无法传到后台

5.在views.py中获取参数并写入数据库

代码如下(示例):

from django.shortcuts import render
from django.http import HttpResponse,JsonResponse
from processes.models import Processlog

def uploadFileSubmit(request):
    if 'username' in request.COOKIES:
        # 获取记住的用户名
        username = request.COOKIES['username']
    else:
        username = ''
    print(username)
    file = request.FILES.get('file_name')
    try:
        if file:
            Processlog.objects.create(file_name=file,username_id=username)

            return render(request,'processes/uploadFile.html',{'message': 1})
        else:
            return render(request, 'processes/uploadFile.html',
                   {'message': 0})
    except Exception as e:
        print(e)
        # 2.使用模板
        return render(request, 'processes/uploadFile.html',
                      {'message': 0})

file = request.FILES.get(‘file_name’)
这一步很重要,一定要是FILES.get
获取前端传过来的文件

6.最后就可以下面的位置上看到传过来的传文件了

总结

以上就是Django上传文件的全部内容啦
本店承接python相关网站的定制开发需,数据分析及答疑等需求,如有需要欢迎前往闲鱼进行咨询

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/883757.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号