我想从用户那里获取一个 csv 文件,然后只想向用户显示该文件中的行数和列数
testapp.html:
<form method="POST" action="rowcol">
{% csrf_token %}
<input type="file" name="file" accept=".csv">
<button type="submit">Upload text</button>
</form>
views.py:
from django.shortcuts import render
from django.shortcuts import HttpResponse
import numpy as np
import pandas as pd
def testapp(request):
return render(request, 'testapp.html', {})
def rowcol(request):
if request.method == 'POST':
file = request.POST["file"]
dataset=pd.read_csv('file')
count_row = dataset.shape[0]
count_col = dataset.shape[1]
ans=("<H1>%d,%d</H1>",count_row,count_col)
return HttpResponse(ans)
url.py:
from django.urls import path
from testapp import views
urlpatterns = [
path('', views.testapp, name='testapp'),
path('', views.rowcol, name='rowcol'),
]
外部文件夹中的urls.py:
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('testapp.urls')),
]
最佳答案
这里有一些问题。首先,您的 path(..)
彼此冲突。您需要为第二条路径提供不同的路径。例如:
# testapp/urls.py
from django.urls import path
from testapp import views
urlpatterns = [
path('', views.testapp, name='testapp'),
path(<b>'rowcol/'</b>, views.rowcol, name='rowcol'),
]
接下来在模板中,最好使用 {% url ... %}
模板标记,并将 enctype
设置为 multipart/form-data
:
<form method="post" action="<b>{% url 'rowcol' %}</b>" <b>enctype="multipart/form-data"></b>
{% csrf_token %}
<input type="file" name="file" accept=".csv">
<button type="submit">Upload text</button>
</form>
最后在你的 View 函数中,你忘记格式化字符串:
def rowcol(request):
if request.method == 'POST':
file = request.FILES['file']
dataset=pd.read_csv(file)
count_row, count_col = dataset.shape
ans='<H1>%d,%d</H1>' % (count_row,count_col)
return HttpResponse(ans)
return HttpResponse('')
关于python - 如何在 django web 应用程序中显示 csv 文件的行数和列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58270778/