Django文件的上传和数据显示

前言

最近在做基于机器学习的预测系统,里面需要用到excel表格的上传和显示,在这把过程记录一下

Excel文件的上传

  1. 在页面中加入form表单

    <form method="POST" action="/index/" enctype="multipart/form-data">
      {% csrf_token %}
        <input class="form-control-file" type="file" name="Scores" accept=".xlsx, .xls"/>
        <input class="form-control-file" type="submit" value="上传"/>
        {% if msg %}
          <span>
            {{msg}}
          </span>
        {% endif %}
    </form>
  2. 修改应用文件夹中views.py文件

    首先导入用到的库

    from os.path import isdir, dirname, join
    from os import mkdir
    from .settings import BASE_DIR

    接着增加上传函数

    def upload(request):
        if request.method == 'POST':
            # 创建用来存储上传文件的文件夹
            uploadDir = BASE_DIR+'/upload'
            if not isdir(uploadDir):
                mkdir(uploadDir)
            # 获取上传的文件
            uploadedFile = request.FILES.get('Scores')
            if not uploadedFile:
                return render(request, 'index.html', {'msg':'没有选择文件'})
            if not uploadedFile.name.endswith('.xlsx'):
                if not uploadedFile.name.endswith('.xls'):
                    return render(request, 'index.html', {'msg':'必须选择xlsx或xls文件'})
            # 上传
            dstFilename = join(uploadDir, uploadedFile.name)
            with open(dstFilename, 'wb') as fp:
                for chunk in uploadedFile.chunks():
                    fp.write(chunk)
            context = {}
            context['msg'] = '上传成功'
            return render(request, 'index.html', context)
        else:
            return render(request, 'index.html',{'msg':None})
  3. 修改应用文件夹中的urls.py文件
    urlpatterns = [
     path('index/', views.upload,),
     path('admin/', admin.site.urls),
    ]

Excel文件的读取与显示

  1. 首先在views.py文件中添加需要用到的库

    import pandas as pd

    接着修改刚才的上传函数

    def upload(request):
     if request.method == 'POST':
         # 创建用来存储上传文件的文件夹
         uploadDir = BASE_DIR+'/upload'
         if not isdir(uploadDir):
             mkdir(uploadDir)
         # 获取上传的文件
         uploadedFile = request.FILES.get('Scores')
         if not uploadedFile:
             return render(request, 'index.html', {'msg':'没有选择文件'})
         if not uploadedFile.name.endswith('.xlsx'):
             if not uploadedFile.name.endswith('.xls'):
                 return render(request, 'index.html', {'msg':'必须选择xlsx或xls文件'})
         # 上传
         dstFilename = join(uploadDir, uploadedFile.name)
         with open(dstFilename, 'wb') as fp:
             for chunk in uploadedFile.chunks():
                 fp.write(chunk)
         # 读取excel文件并转化为html格式
         pdData = pd.read_excel(dstFilename)
         pdhtml = pdData.to_html()
         context = {}
         context['form'] = pdhtml
         context['msg'] = '上传成功'
         return render(request, 'index.html', context)
     else:
         return render(request, 'index.html',{'msg':None})
  2. 最后在页面中增加
     {% autoescape off %}
        {{form}}
     {% endautoescape %}
  3. 执行命令,运行服务器,即可上传文件并且将上传的Excel表格显示在网页中了

原文地址:https://www.cnblogs.com/FortisCK/p/11620250.html

时间: 2024-08-05 18:34:08

Django文件的上传和数据显示的相关文章

django文件批量上传-简写版

模板中创建表单 <form method='post' enctype='multipart/form-data' action='/upload/'> <input type='file' name='upload_img'/> <input type='file' name='upload_img'/> <input type='submit' value='submit'> </form> 在urls中到处一个upload地址 url(r'

django实现分片上传文件

目标:利用django实现上传文件功能 1,先设置路由系统 urls.py from django.conf.urls import url,include from django.contrib import admin from app01 import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^upload/$', views.upload), ] 2,配置html模板文件(前端页面展示) template

Django2.2 静态文件的上传显示,遇到的坑点-------已解决

前情提要:这里虽说是Django2.2 ,但经过测试发现Django 的其他版本也可以用此方法解决 一.项目根目录下的static文件的路由显示问题 在项目根目录下创建静态文件时发现,即使我配置了setting.py的静态文件也依旧会出现 http://127.0.0.1:8000/static/img/snowWord.jpg 类似的无法访问的情况,看了很多博文都说是没有配置setting.py,从下面这张图我们可以看出配置信息并没有什么问题, 于是经过多方查找,总结了一下疑难问题: 学到静态

iOS开发网络篇—文件的上传

iOS开发网络篇—文件的上传 说明:文件上传使用的时POST请求,通常把要上传的数据保存在请求体中.本文介绍如何不借助第三方框架实现iOS开发中得文件上传. 由于过程较为复杂,因此本文只贴出部分关键代码. 主控制器的关键代码: YYViewController.m 1 #import "YYViewController.h" 2 3 #define YYEncode(str) [str dataUsingEncoding:NSUTF8StringEncoding] 4 5 @inter

PHP文件的上传

<?php header('Content-type:text/html;charset=utf-8'); if(isset($_POST['submit'])){ //检测表单'submit'是否有上传,如果有上传继续下一步,如果没那就没反应 if(is_uploaded_file($_FILES['myfile']['tmp_name'])){ //检测指定文件是否通过HTTP POST上传的,如果是继续下一步,如果不是提示'可能有攻击!' $arr=pathinfo($_FILES['my

文件的上传

上传: 1). 表单需要注意的 3 点 2). Struts2 的文件上传实际上使用的是 Commons FileUpload 组件, 所以需要导入 commons-fileupload-1.3.jarcommons-io-2.0.1.jar 3). Struts2 进行文件上传需要使用 FileUpload 拦截器 4). 基本的文件的上传: 直接在 Action 中定义如下 3 个属性, 并提供对应的 getter 和 setter //文件对应的 File 对象private File [

【转】文件各种上传,离不开的表单

阅读目录 利用表单实现文件上传 表单异步上传(jquery.form插件) 模拟表单数据上传(FormData) 分片上传 使用HTML5 拖拽.粘贴上传 上传插件(WebUploader) 总结 作为程序员的我们,经常会要用到文件的上传和下载功能.到了需要用的时候,各种查资料.有木有..有木有....为了方便下次使用,这里来做个总结和备忘. 利用表单实现文件上传 最原始.最简单.最粗暴的文件上传. 前端代码: //方式1 <form action="/Home/SaveFile1&quo

用struts2实现文件的上传下载

在做B/S系统时经常会有文件上传下载的需求,现就基于struts2框架实现其功能 Struts2框架默认采用Commons-fileupload组件完成文件上传功能.? 使用Struts2框架实现文件上传功能,只需在Action中定义一个java.io.File类型的成员并为之设立setter方法,方法名要和参数名对应.? 客户端上传的文件, Struts2框架会自动将其保存在临时文件中,封装成java.io.File类对象.如果还想得到上传的文件名和文件类型,需按照如下命名规则在Action中

struts2 文件的上传下载 表单的重复提交 自定义拦截器

文件上传中表单的准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置为 post 需添加 <input type=“file”> 字段. Struts 对文件上传的支持 在 Struts 应用程序里, FileUpload 拦截器和 Jakarta Commons FileUpload 组件可以完成文件的上传. 步骤:1. 在 Jsp 页面的文件上传表单里使用