Creé una lista de países en la sección de la página de búsqueda de python, los datos se envían a la tabla Html con sintaxis jinja "La tabla Html también tiene una función de JavaScript, funciona correctamente, no se necesita ayuda con eso". Me gustaría poner los datos de la lista de datos en un archivo separado y luego devolverlos a python y luego enviarlos a la tabla Html con la sintaxis jinja existente y no cambiar nada en la función de plantilla de procesamiento. Vea un ejemplo de algunas listas de países en los campos de datos, pero la intención es tener más, es muy útil colocarlos en un archivo separado y recuperarlos en la página de búsqueda de python y luego enviarlos a la tabla Html a través de la función de plantilla de representación. . Sé que hay un método para hacerlo a través de JSON, pero que yo sepa, no he podido hacerlo. Cualquier idea de cómo hacer esto. Gracias.
Ejemplo de Python
# Country page section. @app.route('/search') @login_required def search(): countryTables = ("Country", "Yearly Water Use", "Daily Water Use", "Population M") data = [ ("Nigeria", "160,470,000,000 mᶟ", "216 liter.p.capital", "216,139,589"), ("Ethiopia", "10,550,000,000 mᶟ", "279 liter.p.capital", "122,963,588"), ("Egypt", "77,550,100,000 mᶟ", "2,202 liter.p.capital", "120,334,404") ] return render_template('search.html', countryTables=countryTables, data=data)ejemplo HTML
{% extends "layout.html" %} {% block title %} Search Page {% endblock %} {% block content %} <div class="container"> <br> <h3>Country Search!</h3> <div class="input-group input-group-lg"> <input aria-describedby="inputGroup-sizing-lg" aria-label="Sizing example input" class="form-control" id="countryInput" onkeyup="countryFunction()" placeholder="Search for Country.." type="text"> </div> <table id="countryTable" class="table table-hover"> <thead> <tr> {% for countryTable in countryTables %} <th scope="col">{{ countryTable }}</th> {% endfor %} </tr> </thead> <tbody> {% for row in data %} <tr> {% for cell in row %} <td> {{ cell }}</td> {% endfor %} </tr> {% endfor %} </tbody> </table> </div> {% endblock %}Guarde los detalles del país en un archivo JSON como este (vamos a nombrarlo country.json :
{ "0": ["Nigeria", "160,470,000,000 mᶟ", "216 liter.p.capital", "216,139,589"], "1": ["Ethiopia", "10,550,000,000 mᶟ", "279 liter.p.capital", "122,963,588"], "2": ["Egypt", "77,550,100,000 mᶟ", "2,202 liter.p.capital", "120,334,404"] }En tu ruta:
import json @app.route('/search') @login_required def search(): countryTables = ("Country", "Yearly Water Use", "Daily Water Use", "Population M") f = open('country.json',) countryData = json.load(f) return render_template('search.html', countryData=countryData, countryTables=countryTables)En su archivo HTML:
{% extends "layout.html" %} {% block title %} Search Page {% endblock %} {% block content %} <div class="container"> <br> <h3>Country Search!</h3> <div class="input-group input-group-lg"> <input aria-describedby="inputGroup-sizing-lg" aria-label="Sizing example input" class="form-control" id="countryInput" onkeyup="countryFunction()" placeholder="Search for Country.." type="text"> </div> <table id="countryTable" class="table table-hover"> <thead> <tr> {% for countryTable in countryTables %} <th scope="col">{{ countryTable }}</th> {% endfor %} </tr> </thead> <tbody> {% for row in countryData %} <tr> {% for cell in countryData[row] %} <td> {{ cell }}</td> {% endfor %} </tr> {% endfor %} </tbody> </table> </div> {% endblock %}