• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

308
Vistas
usando etiquetas de plantilla de Django en respuesta a ajax

Uso Ajax para actualizar una lista de objetos, digamos cada vez que se hace clic en un botón. Pero quiero usar etiquetas de plantilla de Django para generar cada elemento de la lista. El problema es que tengo que enviar un JsonResponse a JavaScript, pero allí no puedo usar estas etiquetas.

Tengo que enviar atributos de objeto como json. y estoy atascado con html simple en Ajax:

 ... success: function (json) { if (json.new_messages.length) { for (let m of json.new_messages) { $('#messages-list').append("<li>"+m.sender_name+" "+m.content+"</li>"); } } },
about 3 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Una forma que encontré para resolver este problema es renderizar la plantilla primero y luego enviar el texto resultante como respuesta.

En un archivo de plantilla, solo incluya el html que debe usarse en Ajax. Sin etiquetas html adicionales. Aquí puede usar todas las etiquetas y filtros de Django. Por ejemplo:

 {% for m in messages_list %} <li> <b>{{ m.sender.profile.get_short_name }}</b> ({{ m.send_time|time:"H:i" }}): {{ m.content }} {% if m.sender == user %} {% if m.is_seen %} <b><small>✓✓</small></b> {% else %} <b><small>✓</small></b> {% endif %} {% endif %} </li> {% empty %} <li>No messages here yet...</li> {% endfor %}

En la vista, usando una función llamada render_to_string , represente la plantilla y envíela en el contexto de la respuesta json:

 response = render_to_string("just_list.html", context={"messages_list": new_messages}) return JsonResponse({"messages": response})

Entonces se puede usar fácilmente en Ajax:

 ... success: function (json) { $('#messages-list').append(json.messages); },
about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda