Djangoのファイルアップロードやデータ表示

序文

アップロードして表示するために、Excelのスプレッドシートを使用する必要があり、機械学習システム、に基づいて作られた最近の予測では、この過程でそれを記録

アップロードExcelファイル

  1. ページ内のフォームのフォームに参加

    <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のスプレッドシートをアップロードすることができます

おすすめ

転載: www.cnblogs.com/FortisCK/p/11620250.html