Entonces, lo que estoy tratando de hacer eventualmente es leer un CSV en el backend usando Python/Flask y mostrarlo como una tabla HTML usando Javascript.
He reducido las cosas a solo tratar de obtener console.log() para mostrar los valores JSON que se pasan desde mi rutina de Python. Una vez que pueda recuperar mis valores JSON a voluntad, construir la tabla no debería ser un problema.
Aquí está mi código ahora mismo:
__init__.py
from flask import Flask, render_template import json import csv app = Flask(__name__) filePath = "/protec/test.csv" @app.route("/") def index(): tableData = get_table_data() return render_template("index.html", tableData=tableData) def get_table_data(): tableData = [] with open(filePath, encoding='utf-8') as file: csvReader = csv.DictReader(file) for row in csvReader: tableData.append(row) with open(filePath, 'r', encoding='utf-8') as jsonf: tableString = json.dumps(tableData, indent=4) return tableString if __name__ == "__main__": app.run()parte del script de index.html que (por ahora) se activa a través de onpageshow
<script> function build_table() { var parsedData = ' {{ tableData }} '; console.log(parsedData); } </script>mi archivo test.csv muy simple
first,last,age,hair john,doe,29,brown jane,doent,30,blondDesde Python, intenté devolver tanto tableData como tableString. Cuando devuelvo tableString, aparece un error cuando inspecciono en el navegador.
Uncaught SyntaxError: Invalid or unexpected tokenCuando devuelvo tableData, obtengo... algo... en la consola, pero no es realmente JSON y tiene algunos valores extraños que (creo) representan comillas.
[{'first': 'john', 'last': 'doe', 'age': '29', 'hair': 'brown'}, {'first': 'jane', 'last': 'doent', 'age': '30', 'hair': 'blond'}]Soy nuevo en el desarrollo web y los marcos y parece que no pude encontrar un ejemplo que pasara más de un registro JSON a la vez. Cualquier ayuda es apreciada.
Para lograr su objetivo, solo necesita pasar su lista tableData a la plantilla.
from flask import Flask, render_template import json import csv app = Flask(__name__) filePath = '/protec/test.csv' @app.route("/") def index(): tableData = get_table_data() return render_template('index.html', tableData=tableData) def get_table_data(): tableData = [] with open(filePath, encoding='utf-8') as file: csvReader = csv.DictReader(file) tableData = [row for row in csvReader] return tableData Dentro de la plantilla, puede usar el filtro tojson para convertir los datos a un formato compatible con JSON. Ahora obtiene una variedad de objetos que puede procesar con JavaScript.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script> (function build_table() { var data = {{ tableData | tojson }}; console.log(data); })(); </script> </body> </html>