Python Django上传的文件没有';t过程
我正在构建一个Django web应用程序,用户需要在其中上载文件。这个文件应该经过一个机器学习过程,然后结果将显示在不同的页面上 现在,如果每个功能都有文本字段,它就可以工作了,但是当我想上传一个csv文件(csv文件称为test.csv)时,把它放在一个pandas数据框中,结果页不会显示,看起来csv文件没有处理 它应该做的是,如果上传了文件,将上传的文件保存在内存中,处理它并在结果页面上返回输出 HTMLPython Django上传的文件没有';t过程,python,python-3.x,django,pandas,Python,Python 3.x,Django,Pandas,我正在构建一个Django web应用程序,用户需要在其中上载文件。这个文件应该经过一个机器学习过程,然后结果将显示在不同的页面上 现在,如果每个功能都有文本字段,它就可以工作了,但是当我想上传一个csv文件(csv文件称为test.csv)时,把它放在一个pandas数据框中,结果页不会显示,看起来csv文件没有处理 它应该做的是,如果上传了文件,将上传的文件保存在内存中,处理它并在结果页面上返回输出 HTML {% extends "base.html" %} {% bl
{% extends "base.html" %}
{% block content %}
<div class="content">
<div class="row">
<div class="col-lg-4">
<div class="card card-tasks">
<h1> </h1>
<form action="{% url 'result' %}">
{% csrf_token %}
<p>temp_normal:</p>
<input class="form-control" type="text" name="temp_normal">
<br>
<p>hour:</p>
<input class="form-control" type="text" name="hour">
<br>
<p>hour_x:</p>
<input class="form-control" type="text" name="hour_x">
<br>
<p>hour_y:</p>
<input class="form-control" type="text" name="hour_y">
<br>
<input class="form-control" type="submit" value='Submit'>
</form>
</div>
</div>
<div class="col-lg-4">
<div class="card card-tasks">
<form action="{% url "result" %}" method="POST" enctype="multipart/form-data" class="form-horizontal">
{% csrf_token %}
<div class="form-group">
<label for="name" class="col-md-3 col-sm-3 col-xs-12 control-label">File: </label>
<div class="col-md-8">
<input type="file" name="csv_file" id="csv_file" required="True" class="form-control">
</div>
</div>
<div class="form-group">
<div class="col-md-3 col-sm-3 col-xs-12 col-md-offset-3" style="margin-bottom:10px;">
<button class="btn btn-primary"> <span class="glyphicon glyphicon-upload" style="margin-right:5px;"></span>Upload </button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
{% endblock content %}
尝试:
尝试:
你需要上传按钮上的
type=“submit”
吗?在我添加了type=“submit”
之后仍然不起作用。尝试从上下文添加你的表单->{{form}
而不是html文件输入。你需要上传按钮上的type=“submit”
吗?在我添加了type=“submit”之后仍然不起作用
尝试从上下文添加表单->{{{form}
而不是html文件inputstuff正是由于这段代码。但是我得到一个错误无效的文件路径或缓冲区对象类型:
我想这是因为熊猫不喜欢这样<代码>\venv\lib\site packages\pandas\io\common.py,第243行,在get_filepath_或_buffer中是的,我想说看起来像pandas错误-需要查看pickled函数中的内容您是指拾取的.sav文件吗?还是别的什么?是的,最初的*模型是pickledstuff,这要归功于这段代码。但是我得到一个错误无效的文件路径或缓冲区对象类型:
我想这是因为熊猫不喜欢这样<代码>\venv\lib\site packages\pandas\io\common.py,第243行,在get_filepath_或_buffer中是的,我想说看起来像pandas错误-需要查看pickled函数中的内容您是指拾取的.sav文件吗?或者别的什么?是的,原来的模型被腌制了
def handle_uploaded_file(f):
with open('test.csv', 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
# custom method for generating predictions
def getPredictions(data):
import pickle
model = pickle.load(open("test_model.sav", "rb"))
prediction = model.predict(data)
return prediction
@login_required
def result(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
handle_uploaded_file(request.FILES['file'])
data = form
data = pd.read_csv(data,header=0)
result = getPredictions(data)
return render(request, 'result.html', {'result': result})
else:
form = UploadFileForm()
return render(request, 'index.html', {'form': form})
<form action="{% url "result" %}" method="POST" enctype="multipart/form-data" class="form-horizontal">
{% csrf_token %}
<div class="form-group">
<label for="name" class="col-md-3 col-sm-3 col-xs-12 control-label">File: </label>
<div class="col-md-8">
{{ form }}
</div>
</div>
<div class="form-group">
<div class="col-md-3 col-sm-3 col-xs-12 col-md-offset-3" style="margin-bottom:10px;">
<button class="btn btn-primary" type="submit"> <span class="glyphicon glyphicon-upload" style="margin-right:5px;"></span>Upload </button>
</div>
</div>
</form>
@login_required
def result(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
file = request.FILES['file']
handle_uploaded_file(file)
data = pd.read_csv(file,header=0)
result = getPredictions(data)
return render(request, 'result.html', {'result': result})
else:
form = UploadFileForm()
return render(request, 'index.html', {'form': form})