Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

553
Views
¿Cómo redirigir al usuario a la página de inicio usando FastAPI, después de enviar un formulario HTML?

Tengo una página con una tabla de estudiantes. Agregué un botón que le permite agregar una nueva fila a la tabla. Para hacer esto, redirijo al usuario a una página con formularios de entrada.

El problema es que después de enviar los formularios completos, el usuario accede a una nueva página vacía. ¿Cómo transferir datos en formularios completos y redirigir al usuario a la tabla?

Recién comencé a aprender programación web, así que decidí primero hacer una implementación sin usar tecnologías AJAX.

Código:

 from fastapi import FastAPI, Form from fastapi.responses import Response import json from jinja2 import Template app = FastAPI() # The page with the table @app.get('/') def index(): students = get_students() # Get a list of students with open('templates/students.html', 'r', encoding='utf-8') as file: html = file.read() template = Template(html) # Creating a template with a table # Loading a template return Response(template.render(students=students), media_type='text/html') # Page with forms for adding a new entry @app.get('/add_student') def add_student_page(): with open('templates/add_student.html', 'r', encoding='utf-8') as file: html = file.read() # Loading a page return Response(html, media_type='text/html') # Processing forms and adding a new entry @app.post('/add') def add(name: str = Form(...), surname: str = Form(...), _class: str = Form(...)): add_student(name, surname, _class) # Adding student data # ???
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Para empezar, en los casos en los que devuelva plantillas jinja2, debe devolver una TemplateResponse, como se muestra en la documentación . Para redirigir al usuario a una página específica, puede usar RedirectResponse . Dado que lo hace a través de un método POST (y no GET) (como se muestra en su ejemplo), se generará un error 405 (Método no permitido) . Sin embargo, gracias a @tiangolo , puede cambiar el código de estado de respuesta a status_code=status.HTTP_303_SEE_OTHER y el problema se resolverá. A continuación se muestra un ejemplo de trabajo. En caso de que necesite pasar la ruta y/o los parámetros de consulta a sus puntos finales en el futuro, eche un vistazo a esta o esta respuesta también.

 from fastapi import FastAPI, Request, Form, status from fastapi.templating import Jinja2Templates from fastapi.responses import RedirectResponse app = FastAPI() templates = Jinja2Templates(directory="templates") # replace with your own get_students() method def get_students(): return ["a", "b", "c"] @app.post('/add') async def add(request: Request, name: str = Form(...), surname: str = Form(...), _class: str = Form(...)): # add_student(name, surname, _class) # Adding student data redirect_url = request.url_for('index') return RedirectResponse(redirect_url, status_code=status.HTTP_303_SEE_OTHER) @app.get('/add_student') async def add_student_page(request: Request): return templates.TemplateResponse("add_student.html", {"request": request}) @app.get('/') async def index(request: Request): students = get_students() # Get a list of students return templates.TemplateResponse("index.html", {"request": request, "students": students})
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!