如何使用pandas在django上读取excel文件?

问题描述 投票:0回答:2

我正在开发一个网站,该网站将您所在的城市和地区以及您想吃的食物作为输入。然后,它会向您显示您所在地区提供您想要的食物的所有餐厅的列表。 我的网站通过 Excel 文件获取所有餐厅的列表(来自管理员)。 我现在面临的问题是我无法通过pandas读取Excel文件。

我的

views.py
文件如下:

class Addcity(View):

    def post(self, request, *args, **kwargs):  
        
        file_name= request.POST.get('FileName')
       
        #some extra lines of code
 
        df = pd.read_excel(file_name,names=["name","rating","distance"])

        print(df)
       
        return render(request, 'appmanager/addcity.html')

目前,每当我上传文件时,它都会显示错误(不存在这样的文件),我什至尝试将我的文件与我的

views.py
文件保存在同一目录中,但仍然不起作用。

我的

addcity.html
文件如下:

{% extends 'appmanager/base.html' %}

{% block content %}

<div class="container mb-5">
    
    <div class="row justify-content-center mt-1">
        <div class="card col-md-5 col-sm-12  p-4 text-center">
            <form method="POST" action = "{% url 'welcome' %}" >
                {% csrf_token %}
                 <div class="form-group">
                 

                  <label for="FileName" class="form-label">Upload a file</label>
                  <input class="form-control" type="file" name="FileName" />
               
               
                  
                </div>
                <button type="submit" class="btn btn-primary mb-2">Enter</button>

              </form>
              

        </div>

    </div>
</div>
{% endblock content %}

这里任何可以帮助我解决问题的人,任何帮助,无论多小,都将不胜感激。 问候。

python django django-views django-forms file-handling
2个回答
1
投票

基于上面给出的答案,您可以通过创建 django 表单来完成此操作。请按照以下步骤操作:

创建一个

forms.py
并创建一个表单。使用以下代码作为参考:

from django import forms

class Mynewform(forms.Form):

    Myname= forms.CharField(label='Enter your name')
    Myage= forms.CharField(label='Enter your Age')
    Form_file = forms.FileField(label='choose a file')

您可以通过在您的

Post request
中添加以下代码来读取Excel文件。

from forms import Mynewform

form = Mynewform(request.POST,request.FILES)
if form.is_valid():
    name = form.cleaned_data['Myname']
    age = form.cleaned_data['Myage']
df = pd.read_excel(request.FILES['Form_file'], names=[Your Column names])

最后,将以下代码段添加到您的 HTML 文件中:

        <form action="{% url 'viewfile_url' %}" method="post" enctype="multipart/form-data">
          {% csrf_token %}
          <table>
            {{ form.as_table }}
          </table>
          <input type="submit" value="Submit">
        </form>


0
投票

尝试查看

request.FILES['FileName']

这是关于上传文件的 Django 文档,它可能对你有帮助

https://docs.djangoproject.com/en/4.1/topics/http/file-uploads/

© www.soinside.com 2019 - 2024. All rights reserved.