私はDropzone.js
を使用してウェブサイトからCSV
個のファイルのドラッグアンドドロップアップロードを許可しています。アップロードプロセスは素晴らしいです。アップロードしたファイルを指定したフォルダに保存し、df.to_html()
を使用してdataframe
をHTML
コードに変換してからテンプレートに渡します。コード内のその点に到達しますが、テンプレートをレンダリングせず、エラーもスローされません。だから私の質問は、Dropzone.js
は、レンダリングが起こっているのを防ぐのですか?Dropzone.jsはFlaskのテンプレートのレンダリングを防止します
render_template
を使用せずにテーブルからHTML
コードを返してみましたが、これも機能しません。
の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
@davidism。 'forループ'の内部にいるのは間違いありません。私はバックデントによってそれを修正しましたが、同じ問題がまだあります。私はそれが 'dropzone.js'であるかどうかはわかりませんが、削除のプロセスが原因であると私は信じています。そのルートをコピーし、 'html'を読み込んで私のハードドライブから' csv'ファイルを読み出すと、うまく動作します。 – user2242044
'complete.html'の内容は何ですか? – HassenPy