Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

558
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda