¿Cómo puedo llamar una función de python desde javascript en un proyecto de django? – javascript python django

Pregunta:


Estoy haciendo un proyecto que requiere hacer calculadoras complejas en python, necesito pasar datos que ingresa el usuario en la pagina web, a los parámetros de un función de python, y que esta me retorne el resultado a la pagina web, para que el usuario pueda ver la respuesta. Aquí un ejemplo de la situación:

Esta es la estructura de mi proyecto:

La estructura de mi proyecto

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    {% load staticfiles %}
    <meta charset="UTF-8">

    <title>calculado 1</title>
    <link rel="stylesheet" href="{% static 'c1/style.css' %}">
    <script src="{% static "c1/jquery-3.1.0.min.js" %}"></script>
    <script src="{% static "c1/ux.js" %}"></script>

</head>
<body>

    <div class="formulario">
        <h1> Calculadora Prueba(suma)</h1>
        a:<input type="text" id="inputA" value="10"><br>
        b:<input type="text" id="inputB" value="5"><br>
        <input type="submit" id=btn1 value="Calcular"><br>
        respuesta:<input type="text" id="outputR" value=""><br>
    </div>

</body>
</html>

ux.js:

$(document).ready(function() {
    var a;
    var b;
    var outputR;

    $('#btn1').click(function() {
      console.log("click");
      a=$('#inputA').val();
      b=$('#inputB').val();
      $('#outputR').val( sumar0() );// sumar0 es la funcion de python
    });

});

prueba0.py:

def sumar0(a,b):
    return str(a+b)

vista del usuario:
vista del usuario

Preguntado por: kael1706

Ricardo D. Quiroga

Utiliza una petición AJAX para enviarles los parámetros requeridos y obtener el resultado de la misma, crea una vista que maneje esa petición y reciba los parámetros de entrada de la función.

Seria mas o menos algo así:

views.py

def vista_sumar(request):
    if request.method == 'POST':
        a = request.POST['a']
        b = request.POST['b']
        c = sumar(a,b)
        return JsonResponse({ resultado: c })
    else:
        return HttpResponse("Peticion no valida")

En algun lado necesariamente en la vista

def sumar(a, b):
    return a + b

Javascript + JQuery

$('#btn1').click(function() {
    console.log("click");
    a=$('#inputA').val();
    b=$('#inputB').val();
    $.ajax({
        method: 'POST',
        url: 'ruta de tu vista definida en django'
        data: {
            'a': a,
            'b': b, 
        },
        dataType: "json",
        success: function(response) {
            $('#outputR').val(response.resultado);
        }
    }); 
});

Fuente

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *