> Faqs > Usar el valor retornado en una función de JavaScript, en el código de una vista de Django

Usar el valor retornado en una función de JavaScript, en el código de una vista de Django

Hola te felicito por este articulo, me estoy iniciando en el uso de Javascript. Lo estoy usando en mi html para determinar el id y valor retornado de un select, todo esto en el entorno del framework Django. ya lo tengo logrado, pero necesito el valor retornado devuelto en el html, para usarlos a su vez en la llamada a una funcion de Django:

En mi html:

<select id="Sel_tallas_{{ forloop.counter }}" name="Sel_tallas" onchange="ShowSelectedDinamico(id);">
        {% for talla in tallas %}
            <p class="card-text">
                <option value="{{ talla.pk }}">{{talla.Talla}}</option>
            </p>
        {%endfor%}}
</select> 

mi javascript:

function ShowSelectedDinamico(nombreSelect)
{
    /* Para obtener el valor */
    var cod = document.getElementById(nombreSelect).value;
    alert(nombreSelect)
    alert(cod);
    /* Para obtener el texto */
    var combo = document.getElementById(nombreSelect);
    var selected = combo.options[combo.selectedIndex].text;
    alert(selected);
    return cod;
}

Necesito la variable: cod devuelta en el html, para llamar una funcion de Django:

<div class='card-footer text-center'>
    <a href="{% url 'cart:add_product' producto.id cod 1 2 %}"  class ="btn btn-success">Añadir</a>
</div>

Respuestas

Hola!

Hay que entender que todo código que necesites ejecutar en Django requiere hacer una solicitud al servidor, ya que Django se ejecuta del lado del servidor.

En problema de un valor que te devuelve Javascript es que lo tienes en el lado del cliente y por tanto no puedes usarlo directamente en Django, hasta que no se produzca una recarga de la página.

La manera de enviar datos a Django sin necesidad de recargar la página es usar Ajax, para realizar la solicitud al servidor con Javascript. Puedes hacer esa llamada con fetch, lo que llamaría a una ruta de Django donde podrías usar el código de la vista. Los datos los tendrás que enviar por get o por post.

La llamada fecht podría recibir esa porción de HTML que luego volcarías en tu página web en el lugar adecuado.

A veces estas cosas es útil hacerlas con una librería de trabajo con Ajax. Te paso estas referencias: Ajax en jQuery o Ajax en Axios.

En DesarrolloWeb tienes algunos talleres que muestran cómo realizar selects dinámicos con Ajax. No está en Python pero la parte del Ajax te puede servir. Campos SELECT dinámicos con jQuery, Ajax

Camila
610 25 40 6
Estoy muy agradecido, desde que lei tu respuesta, deje de darme cabezazos, contra la pared, y empecé a aprender de ese Ajax.. te comente que mi nivel es de novato.. es muy amplia la información, y mi requerimiento es muy puntual, podrias darme un ejemplo con los datos de mi código que te dí, agradeceria un montón.. Edito la respuesta para poner un ejemplo