Я использую Dropzone.js
, чтобы разрешить перетаскивание файлов CSV
через веб-сайт Flask
. Процесс загрузки отлично работает. Я сохраняю загруженный файл в указанную вами папку и затем могу использовать df.to_html()
для преобразования dataframe
в код HTML
, который затем передаю в мой шаблон. Он добирается до этой точки в коде, но он не отображает шаблон и никаких ошибок не возникает. Поэтому мой вопрос: почему Dropzone.js
предотвращает визуализацию?Dropzone.js предотвращает создание фляжки из шаблона рендеринга
Я также попробовал только вернуть код HTML
из таблицы и не использовать render_template
, но это также не работает.
INIT .py
import os
from flask import Flask, render_template, request
import pandas as pd
app = Flask(__name__)
# get the current folder
APP_ROOT = os.path.dirname(os.path.abspath(__file__))
@app.route('/')
def index():
return render_template('upload1.html')
@app.route('/upload', methods=['POST'])
def upload():
# set the target save path
target = os.path.join(APP_ROOT, 'uploads/')
# loop over files since we allow multiple files
for file in request.files.getlist("file"):
# get the filename
filename = file.filename
# combine filename and path
destination = "/".join([target, filename])
# save the file
file.save(destination)
#upload the file
df = pd.read_csv(destination)
table += df.to_html()
return render_template('complete.html', table=table)
if __name__ == '__main__':
app.run(port=4555, debug=True)
upload1.html
<!DOCTYPE html>
<meta charset="utf-8">
<script src="https://rawgit.com/enyo/dropzone/master/dist/dropzone.js"></script>
<link rel="stylesheet" href="https://rawgit.com/enyo/dropzone/master/dist/dropzone.css">
<table width="500">
<tr>
<td>
<form action="{{ url_for('upload') }}", method="POST" class="dropzone"></form>
</td>
</tr>
</table>
EDIT
Вот образец данных csv
я отправляю:
Person,Count
A,10
B,12
C,13
Complete.html
<html>
<body>
{{table | safe }}
</body>
</html>
Ваше возвращение утверждение внутри для цикла, только первая итерация цикла будет перед возвратом. Как вы думаете, почему Dropzone.js что-то делает? JavaScript работает на клиенте, Flask и Jinja запускаются на сервере отдельно. – davidism
@ давидис. Вы правы в том, что находитесь внутри цикла for. Я исправил это, обратив внимание, но все равно имею ту же проблему. Я точно не знаю, что это 'dropzone.js', но я считаю, что это связано с процессом устранения. Если я копирую этот маршрут и загружаю 'html' из чтения файла' csv' с моего жесткого диска, он отлично работает. – user2242044
Что такое контент для 'complete.html'? – HassenPy