Saltar al contenido

Django – Cómo mostrar mensajes bajo la función ajax

Te recomendamos que revises esta respuesta en un ambiente controlado antes de pasarlo a producción, un saludo.

Solución:

Estas son las herramientas/métodos que me ayudaron a resolver el problema. Primero, tengo un método de utilidad auxiliar llamado render_to_json:

# `data` is a python dictionary
def render_to_json(request, data):
    return HttpResponse(
        json.dumps(data, ensure_ascii=False),
        mimetype=request.is_ajax() and "application/json" or "text/html"
    )

tengo un messages.html plantilla para representar el html necesario para los mensajes emergentes:

% for message in messages %
 message 
% endfor %

Cuando creo un mensaje en respuesta a una solicitud de AJAX, uso Django render_to_string para empaquetar el(los) mensaje(s) en un string que se almacena en un data diccionario, que luego usa mi render_to_json para devolver una respuesta apropiada:

def my_custom_view(request)
    # ...  your view code
    data = 
        'msg': render_to_string('messages.html', , RequestContext(request)),
    
    return render_to_json(request, data)

Luego, en mi jQuery $.post(...) función de devolución de llamada, verifico si el response objeto tiene un msg attributey, a continuación, inserte el contenido de response.msg en el DOM donde quiero que esté, con transiciones jQuery si lo desea. Mi base.html plantilla contiene la