Aquí hay un pequeño ejemplo para comenzar con fastapi:
principal.py
from typing import Optional from fastapi import FastAPI, Request, Form from fastapi.templating import Jinja2Templates app = FastAPI() templates = Jinja2Templates(directory='./') @app.get("/") def index(): return "Hello World" @app.get("/item/{text}") def get_item(text: str): return {"result": tuple(['Hi', 'hello'])} @app.get("/form") def form(request: Request): result = "" return templates.TemplateResponse('form.html', context={'request': request, 'result': result}) @app.post("/form") def form(request: Request, text: str=Form(...)): result = ['Hello', 'Hi', 'Bye'] # to simplify the example return templates.TemplateResponse('form.html', context={'request': request, 'result': tuple(result)})formulario.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Small example</title> </head> <body> <form method="post"> <label for="text">Input text:</label> <br> <textarea id="text" name="text" rows="12" cols="50"></textarea> <br/> <input type="submit" value="Submit"> </form> <br></br> <form method="post"> <label for="text">Result:</label> <br> <textarea id="result" name="result" rows="12" cols="50"> {{ result }} </textarea> <br/> </form> </body> </html>Aquí obtengo el resultado en el área de texto como: ('Hola', 'Hola', 'Adiós')
Lo que necesito es mostrarlo línea por línea en el área de texto de resultados :
Hola.
Hola.
Adiós.
Podrías recorrer la tupla:
<textarea id="result" name="result" rows="12" cols="50"> {% for i in result %} {{ i }} {% endfor %} </textarea> También puede escribir el aobve en una línea, ya que lo anterior no parece alinear el texto a la izquierda, a menos que cambie todo el código de python a la izquierda. Usar junto con , como se describe aquí , para agregar saltos de línea entre los elementos.
<textarea id="result" name="result" rows="12" cols="50">{% for i in result %}{{ i }} {% endfor %}</textarea>