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

104
Views
Devolver la vista HTML frente al objeto JSON con HTML usando Flask y AJAX

Estoy desarrollando una aplicación Flask de una sola página usando AJAX para navegar por mis rutas. Por ejemplo, cuando un usuario hace clic en un enlace de navegación, se realiza una solicitud GET con AJAX que llama a una ruta como "/profile", que devuelve un JSON que incluye el HTML que se reemplazará en la pantalla.

Si escribo una ruta existente en el navegador sin llamar a una solicitud AJAX, el HTML se devolverá como se esperaba como un JSON y simplemente se pegará como texto en la pantalla. Me gustaría dar a los usuarios la posibilidad de escribir rutas en la barra de direcciones y hacer que la página se cargue en lugar de simplemente pegar el JSON con el HTML. ¿Cuál es la forma correcta de devolver una vista en lugar de simplemente el JSON desde mi punto final Flask si no se realizó una solicitud AJAX (alguien simplemente escribe "/ perfil" en el navegador sin hacer clic en el enlace de navegación del perfil)?

Mi primer pensamiento es pasar algún tipo de parámetro como parte de cada solicitud de AJAX y hacer que el backend verifique si el parámetro existe al ser llamado, donde devolvería una vista en lugar de JSON. Eso parece muy ineficiente y haría que el código fuera más complejo al agregar muchas más declaraciones if. Además, tendría que crear 2 archivos HTML para cada ruta.

¿Cuál es la forma correcta de hacer esto?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Si está realizando una solicitud ajax, puede agregar esto a su ruta.

 _xhr_key = request.headers.get('X-Requested-With') if _xhr_key and _xhr_key == 'XMLHttpRequest': # if true this means that its an AJAX call #return data for AJAX function else: #return data for regular request #render HTML template to the user over here since its a regular request

Las solicitudes Ajax crean un objeto XMLHttpRequest . Entonces, si el objeto XMLHttpRequest está presente en el encabezado, significa que es una solicitud AJAX. Así es como puede cargar una página web cuando un usuario normalmente la carga, por lo tanto, puede mostrar la página usando AJAX y cuando alguien normalmente escribe el enlace en el navegador

about 4 years ago · Juan Pablo Isaza 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!