【问题标题】:Catch an uploaded csv file using Django (No models, No forms)使用 Django 捕获上传的 csv 文件(无模型,无表单)
【发布时间】:2017-11-08 20:28:26
【问题描述】:

我未能捕捉到这个上传的 csv 文件。我只想上传一个文件,并存储到一个变量中,以便以后使用。

模板.html

{% block content %}
                <h1>File content</h1>
                <form action="{% url 'plot:printInfo' %}" method="post" enctype="multipart/form-data">
                     {% csrf_token %}
                    <input id="uploadbutton" type="file" value="Browse" name="file" accept="text/csv" /><br>
                    <input type="submit" value="Upload" />
                </form>
            {% endblock %}

views.py

def printInfo(request):
    #PATH = '/Users/xxxxx_000/Desktop/Django/mysqlApp/plot/data/'
    #data = pd.read_csv(PATH + 'SalesJan2009.csv')


    csvfile = request.FILES['file']

    data = pd.read_csv(csvfile)
    html = data.to_html()

    #method implemented below, It allows to add Id field to an HTML table
    finalString = addIdToHtml(html)

    context = {'TableOfData': finalString,}

    #x and y are lists
    return render(request, 'filter.html', context)

当我使用时

data = pd.read_csv(PATH + 'SalesJan2009.csv')

它工作得很好。现在我要做的就是用上传的文件替换“SalesJan2009.csv”。我该怎么做?

【问题讨论】:

  • 返回什么 request.FILES['file']
  • 如果你不使用模型,如果你不使用表单,你为什么要使用 django??

标签: python django csv file-upload


【解决方案1】:

假设您使用的是pandas..如果您需要替换文件内容,请尝试以下操作:

def printInfo(request):
    path = '/Users/xxxxx_000/Desktop/Django/mysqlApp/plot/data/'
    # data = pd.read_csv(PATH + 'SalesJan2009.csv')
    csvfile = request.FILES['file']

    data = pd.read_csv(csvfile)
    html = data.to_html()

    finalString = addIdToHtml(html)
    context = {
        'TableOfData': finalString,
    }

    file_name = path + 'SalesJan2009.csv'
    data.to_csv(file_name, sep='\t', encoding='utf-8', mode='w')

    return render(request, 'filter.html', context)

请注意,现有的SalesJan2009.csv 文件将被删除并填充新数据。在保存之前,您需要对其(新数据)进行一些验证。

【讨论】:

  • 我实际上想检索一个上传的 csv 文件,这样我就可以用它来代替“SalesJan2009.csv”
  • @NabilJunior 那你能粘贴一个你遇到的错误吗?在您的示例中: data = read_csv(csvfile) 应该实际读取您上传到服务器的文件。
  • 例如,我使用 UploadedFile.size 进行测试,但它没有打印任何内容
  • @NabilJunior 你对 print(csvfile) 有什么输出?
猜你喜欢
  • 2021-12-31
  • 2020-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多