【问题标题】:Pandas Read CSV in django view not workingPandas 在 django 视图中读取 CSV 不起作用
【发布时间】:2020-07-15 05:32:02
【问题描述】:

我要做的是,当用户上传 CSV 文件时。我正在尝试在熊猫中做功能。

Django 模板

<form action="{% url 'upload-timeslot' %}" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

我的看法

def bulk_timeslot_upload(request):
    if request.FILES:
        import pandas as pd
        csv = request.FILES['fileToUpload']
        data = pd.read_csv(csv)
        print(data)
    return render(request, 'bulk-timeslot.html')

当我尝试读取 csv 时,正在运行的服务器退出。如果我在全球范围内导入熊猫,服务器甚至不会运行。

【问题讨论】:

    标签: python django pandas django-templates


    【解决方案1】:

    我遇到了同样的问题,对我有帮助的是this answer。 (更多信息在Django docs

    views.py

    def import_csv(request):
        if request.method == 'POST':
            form = ImportFileForm(request.POST, request.FILES)
            if form.is_valid():
    
                # the temporary_file_path() shows Dask where to find the file
                df_in = dd.read_csv(request.FILES['file_name'].temporary_file_path())
    

    settings.py

    FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.TemporaryFileUploadHandler',]
    

    【讨论】:

      【解决方案2】:

      实际上 read_csv() 接收文件,但你的 request.FILES['fileToUpload'] 是内存缓冲区。因此,有两种可能的方法是将 csv 文件保存在您的系统中,然后通过传递整个路径来读取它,或者使用:

        def bulk_timeslot_upload(request):
          if request.FILES:
             import pandas as pd
             csv = request.FILES['fileToUpload']
             data = pd.read_csv(csv.read())
             print(data)
        return render(request, 'bulk-timeslot.html')
      

      【讨论】:

      • 这不起作用。我不知道,为什么正在运行的服务器会停止。如果它出错,它将显示错误。
      • django 服务器停止了!??
      • 是的,当我调用这个函数时它停止了
      猜你喜欢
      • 2017-06-02
      • 2014-04-17
      • 2021-06-15
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 2019-07-16
      • 1970-01-01
      • 2021-12-06
      相关资源
      最近更新 更多