Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Mostrar datos en Flask con blueprints
#1
hola qur tal estoy metido dentro de este mundo de python y estoy haciendo una plataforma pero estoy atorado en mostrar los dato, lo estos haciendo mediente flask y Blueprints pero no me muestra los datos dentro de unas tablas: 
este es el js:

Código:
$(document).ready(function () {
  $('#Solicitudes').DataTable({
      language: {
          url: 'https://cdn.datatables.net/plug-ins/2.0.5/i18n/es-ES.json'
      }
  });
});
$(document).ready(function() {
  $('.obtener-solicitud').click(function() {
    var id_solicitud = $(this).data('id');
    // Petición AJAX para obtener datos generales de la solicitud
    $.ajax({
      url: '/obtener_solicitud_json/' + id_solicitud,
      type: 'GET',
      success: function(data) {
        $('#folio').val(data.folio);
        $('#nombre_empresa').val(data.nombre_empresa);
        $('#area_empresa').val(data.area_empresa);
        $('#telefono_contacto').val(data.telefono_contacto);
        $('#correo_electronico').val(data.correo_electronico);
        // Mostrar modal de solicitud
        $('#ModalSolicitud').modal('show');
        // Llamar a función para obtener todos los datos relacionados con la solicitud
        obtenerDatosRelacionados(id_solicitud);
      },
      error: function(xhr, status, error) {
        console.error(xhr.responseText);
      }
    });
  });
  // Función para obtener todos los datos relacionados con la solicitud
  function obtenerDatosRelacionados(id_solicitud) {
    // Petición AJAX para obtener datos de inspección
    $.ajax({
      url: '/obtener_inspeccion_json/' + id_solicitud,
      type: 'GET',
      success: function(data) {
        $('#p_inspeccion_select').val(data.p_inspeccion_select);
        $('#hyf_acceso').val(data.hyf_acceso);
      },
      error: function(xhr, status, error) {
        console.error(xhr.responseText);
      }
    });
    // Petición AJAX para obtener datos de actividades
    $.ajax({
      url: '/obtener_actividad_json/' + desc_act,
      type: 'GET',
      success: function(data) {
        $('#desc_act').val(data.desc_act);
        $('#lug_act').val(data.lug_act);
      },
      error: function(xhr, status, error) {
        console.error(xhr.responseText);
      }
    });
    // Petición AJAX para obtener datos de personas que ingresan
    $.ajax({
      url: '/obtener_personas_json/' + nombre,
      type: 'GET',
      success: function(data) {
        $('#nombre').val(data.nombre);
        $('#iden').val(data.identificacion);
      },
      error: function(xhr, status, error) {
        console.error(xhr.responseText);
      }
    });
    // Petición AJAX para obtener datos de vehículos
    $.ajax({
      url: '/obtener_vehiculo_json/' + vehiculo,
      type: 'GET',
      success: function(data) {
        $('#vehiculo').val(data.vehiculo);
        $('#marca').val(data.marca);
        $('#modelo').val(data.modelo);
        $('#color').val(data.color);
        $('#año').val(data.año);
        $('#matricula').val(data.matricula);
        $('#balizado').val(data.balizado);
       
        // Manejo de campo tiav como imagen, archivo pdf, etc.
        if (data.tiav) {
          $('#imagenTiav').attr('src', 'data:image/png;base64,' + data.tiav); // Suponiendo que es una imagen o un pdf
        }
      },
      error: function(xhr, status, error) {
        console.error(xhr.responseText);
      }
    });
    // Petición AJAX para obtener datos de artículos
    $.ajax({
      url: '/obtener_articulo_json/' + cantidad,
      type: 'GET',
      success: function(data) {
        $('#cantidad').val(data.cantidad);
        $('#nom_art').val(data.nom_art);
        $('#desc_art').val(data.desc_art);
      },
      error: function(xhr, status, error) {
        console.error(xhr.responseText);
      }
    });
  }
}); 

este es el python:

Código:
solicitud = Blueprint('solicitud', __name__)

@solicitud.route("/obtener_solicitud_json/<int:id_solicitud>", methods=['GET'])
def obtener_solicitud_json(id_solicitud):
    cursor = mysql.connection.cursor()
    cursor.execute("SELECT * FROM folios WHERE id_solicitud = %s", (id_solicitud,))
    solicitud = cursor.fetchone()
    cursor.close()
    if solicitud:
        resultado = {
            'id_solicitud': solicitud[0],
            'folio': solicitud[1],
            'nombre_empresa': solicitud[3],
            'area_empresa': solicitud[4],
            'telefono_contacto': solicitud[5],
            'correo_electronico': solicitud[6]
        }
        return jsonify(resultado)
    else:
        return jsonify({'error': 'Solicitud no encontrada'}), 404
   
# Consulta 2:  p_inspeccion por p_inspecion_select
@solicitud.route("/obtener_inspeccion_json/<p_inspecion_select>", methods=['GET'])
def obtener_inspeccion_json(p_inspecion_select):
    cursor = mysql.connection.cursor()
    cursor.execute("SELECT * FROM p_inspeccion WHERE p_inspecion_select = %s", (p_inspecion_select,))
    solicitud = cursor.fetchone()
    cursor.close()
    if solicitud:
        resultado = {
            'p_inspecion_select': solicitud[0],
            'hyf_acceso': solicitud[2]
        }
        return jsonify(resultado)
    else:
        return jsonify({'error': 'Inspección no encontrada'}), 404
   
# Consulta 3: Actividades
@solicitud.route("/obtener_actividad_json/<desc_act>", methods=['GET'])
def obtener_actividad_json(desc_act):
    cursor = mysql.connection.cursor()
    cursor.execute("SELECT * FROM actividades WHERE desc_act = %s", (desc_act,))
    solicitud = cursor.fetchone()
    cursor.close()
    if solicitud:
        resultado = {
            'desc_act': solicitud[0],
            'lug_act': solicitud[1]
        }
        return jsonify(resultado)
    else:
        return jsonify({'error': 'Actividad no encontrada'}), 404
# Consulta 4: Personas que ingresan por nombre
@solicitud.route("/obtener_personas_json/<nombre>", methods=['GET'])
def obtener_personas_json(nombre):
    cursor = mysql.connection.cursor()
    cursor.execute("SELECT * FROM personas_ingresan WHERE nombre = %s", (nombre,))
    solicitud = cursor.fetchone()
    cursor.close()
    if solicitud:
        resultado = {
            'nombre': solicitud[0],
            'identificacion': solicitud[1],
        }
        return jsonify(resultado)
    else:
        return jsonify({'error': 'Persona no encontrada'}), 404
# Consulta 5: Vehículos
@solicitud.route("/obtener_vehiculo_json/<vehiculo>", methods=['GET'])
def obtener_vehiculo_json(vehiculo):
    cursor = mysql.connection.cursor()
    cursor.execute("SELECT * FROM vehiculos WHERE vehiculo = %s", (vehiculo,))
    solicitud = cursor.fetchone()
    cursor.close()
    if solicitud:
        resultado = {
            'vehiculo': solicitud[0],
            'marca': solicitud[1],
            'modelo': solicitud[2],
            'color': solicitud[3],
            'año': solicitud[4],
            'matricula': solicitud[5],
            'balizado': solicitud[6],
            'tiav': solicitud[7],
        }
        return jsonify(resultado)
    else:
        return jsonify({'error': 'Vehículo no encontrado'}), 404
# Consulta 6: Artículos
@solicitud.route("/obtener_articulo_json/<int:cantidad>", methods=['GET'])
def obtener_articulo_json(cantidad):
    cursor = mysql.connection.cursor()
    cursor.execute("SELECT * FROM listado_articulos WHERE cantidad = %s", (cantidad,))
    solicitud = cursor.fetchone()
    cursor.close()
    if solicitud:
        resultado = {
            'cantidad': solicitud[0],
            'nom_art': solicitud[1],
            'desc_art': solicitud[2]
        }
        return jsonify(resultado)
    else:
        return jsonify({'error': 'Artículo no encontrado'}), 404

y por ultimo aqui es en donde quiero que se muestren los datos pero unicamente me salen los valores de la empresa:

Código:
 <div class="modal fade" id="ModalSolicitud" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-xl modal-dialog-scrollable">
            <div class="modal-content">
                <div class="modal-header">
                    <h1 class="modal-title fs-5" id="exampleModalLabel">Solicitud de Ingreso</h1>
                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                </div>
                <div class="modal-body">
                    <div class="mb-3 row">
                        <label for="staticEmail" class="col-sm-2 col-form-label">Folio</label>
                        <div class="col-sm-10">
                            <input type="text" readonly class="form-control-plaintext" id="folio">
                        </div>
                    </div>
                    <div class="accordion" id="accordionExample">
                        <!-- Datos de la empresa -->
                        <div class="accordion-item ">
                            <h2 class="accordion-header" id="headingOne">
                                <button class="accordion-button " type="button" data-bs-toggle="collapse"
                                    data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
                                    Datos de la empresa
                                </button>
                            </h2>
                            <div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne"
                                data-bs-parent="#accordionExample">
                                <div class="accordion-body">
                                    <div class="row g-3">
                                        <div class="col-md-6">
                                            <label for="empresa" class="form-label">Nombre de la empresa</label>
                                            <input type="text" class="form-control" id="nombre_empresa" disabled>
                                        </div>
                                        <div class="col-md-6">
                                            <label for="area" class="form-label">Área</label>
                                            <input type="text" class="form-control" id="area_empresa" disabled>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <!-- Datos de contacto -->
                        <div class="accordion-item">
                            <h2 class="accordion-header" id="headingTwo">
                                <button class="accordion-button" type="button" data-bs-toggle="collapse"
                                    data-bs-target="#collapseTwo" aria-expanded="true" aria-controls="collapseTwo">
                                    Datos de contacto
                                </button>
                            </h2>
                            <div id="collapseTwo" class="accordion-collapse collapse show" aria-labelledby="headingTwo"
                                data-bs-parent="#accordionExample">
                                <div class="accordion-body">
                                    <div class="row g-3">
                                        <div class="col-md-6">
                                            <label for="telefono" class="form-label">Teléfono</label>
                                            <input type="tel" class="form-control" id="telefono_contacto" disabled>
                                        </div>
                                        <div class="col-md-6">
                                            <label for="correo_electronico" class="form-label">Correo
                                                Electrónico</label>
                                            <input type="email" class="form-control" id="correo_electronico"
                                                name="correo_electronico" disabled>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    <!-- Punto de inspección -->
                    <div class="accordion-item">
                        <h2 class="accordion-header" id="headingFour">
                            <button class="accordion-button" type="button" data-bs-toggle="collapse"
                                data-bs-target="#collapseFour" aria-expanded="true" aria-controls="collapseFour">
                                Punto de inspección
                            </button>
                        </h2>
                        <div id="collapseFour" class="accordion-collapse collapse show" aria-labelledby="headingFour"
                            data-bs-parent="#accordionExample">
                            <div class="accordion-body">
                                <div class="row g-3">
                                    <div class="col-md-6">
                                        <label for="p_inspecion_select" class="form-label">Puntos de inspección a cruzar</label>
                                        <input type="text" class="form-control" id="p_inspecion_select"  disabled>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                    <!-- Datos del responsable -->
                    <div class="accordion-item">
                        <h2 class="accordion-header" id="headingFive">
                            <button class="accordion-button" type="button" data-bs-toggle="collapse"
                                data-bs-target="#collapseFive" aria-expanded="true" aria-controls="collapseFive">
                                Fecha y hora de acceso a los puntos de inspeccion
                            </button>
                        </h2>
                        <div id="collapseFive" class="accordion-collapse collapse show" aria-labelledby="headingFive"
                            data-bs-parent="#accordionExample">
                            <div class="accordion-body">
                                <div class="row g-3">
                                    <div class="col-md-6">
                                        <label for="telefono" class="form-label">Fecha y hora de acceso</label>
                                        <input type="datetime-local" class="form-control" id="hyf_acceso"  disabled>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                    <!--actividades-->
                    <div class="accordion-item">
                        <h2 class="accordion-header" id="headingSix">
                            <button class="accordion-button" type="button" data-bs-toggle="collapse"
                                data-bs-target="#collapseSix" aria-expanded="true" aria-controls="collapseSix">
                                Actividades a realizar
                            </button>
                        </h2>
                        <div id="collapseSix" class="accordion-collapse collapse show" aria-labelledby="headingSix"
                            data-bs-parent="#accordionExample">
                            <div class="accordion-body">
                                <div class="row g-3">
                                    <div class="col-md-6">
                                        <label for="Descripción" class="form-label">Descripción de actividades</label>
                                        <input type="text" class="form-control" id="desc_act"  disabled>
                                    </div>
                                    <div class="col-md-6">
                                        <label for="lug_act" class="form-label">Lugar de actividades</label>
                                        <input type="text" class="form-control" id="lug_act" disabled>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                        <!-- Datos de identificación -->
                        <div class="accordion-item">
                            <h2 class="accordion-header" id="headingThree">
                                <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseThree"
                                    aria-expanded="true" aria-controls="collapseThree">
                                    Datos de identificación
                                </button>
                            </h2>
                            <div id="collapseThree" class="accordion-collapse collapse show" aria-labelledby="headingThree"
                                data-bs-parent="#accordionExample">
                                <div class="accordion-body">
                                    <table class="table table-striped table-bordered">
                                        <thead class="table-dark">
                                            <tr>
                                                <th class="fw-bold">Nombre completo</th>
                                                <th>Tipo de identificación</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            <tr>
                                                <td><input type="text" class="form-control" id="nombre"  disabled></td>
                                                <td><input type="text" class="form-control" id="iden" disabled></td>
                                            </tr>
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                        </div>
                    <!-- Datos del Vehiculo -->
                    <div class="accordion-item">
                        <h2 class="accordion-header" id="headingSeven">
                            <button class="accordion-button" type="button" data-bs-toggle="collapse"
                                data-bs-target="#collapseSeven" aria-expanded="true" aria-controls="collapseSeven">
                                Vehiculos
                            </button>
                        </h2>
                        <div id="collapseSeven" class="accordion-collapse collapse show" aria-labelledby="headingSeven" data-bs-parent="#accordionExample">
    <div class="row">
        <div class="col-md-6">
            <div class="mb-3">
                <label class="form-label">Se accederá un vehículo</label>
                <input type="text" class="form-control" id="vehiculo"  disabled>
            </div>
            <div class="mb-3">
                <label class="form-label">Marca</label>
                <input type="text" class="form-control" id="marca"  disabled>
            </div>
            <div class="mb-3">
                <label class="form-label">Modelo</label>
                <input type="text" class="form-control" id="modelo"  disabled>
            </div>
            <div class="mb-3">
                <label class="form-label">Color</label>
                <input type="text" class="form-control" id="color"  disabled>
            </div>
        </div>
        <div class="col-md-6">
            <div class="mb-3">
                <label class="form-label">Año</label>
                <input type="text" class="form-control" id="año"  disabled>
            </div>
            <div class="mb-3">
                <label class="form-label">Matricula</label>
                <input type="text" class="form-control" id="matricula"  disabled>
            </div>
            <div class="mb-3">
                <label class="form-label">Cuenta con balizado</label>
                <input type="text" class="form-control" id="balizado"  disabled>
            </div>
            <div class="mb-3">
                <label class="form-label">Tiav</label>
                <a href="#" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight">Ver</a>
                <!-- Offcanvas -->
                <div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasRight" aria-labelledby="offcanvasRightLabel">
                    <div class="offcanvas-header">
                        <h5 class="offcanvas-title" id="offcanvasRightLabel">Tiav</h5>
                        <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
                    </div>
                    <div class="offcanvas-body">
                        <!-- Aquí se va a mostrar la imagen de la tiav -->
                        <img id="imagenTiav" class="img-fluid">
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
                    </div>
                    <!--articulos-->
                        <div class="accordion-item">
                            <h2 class="accordion-header" id="headingEight">
                                <button class="accordion-button" type="button" data-bs-toggle="collapse"
                                    data-bs-target="#collapseEight" aria-expanded="true" aria-controls="collapseEight">
                                    Artículo
                                </button>
                            </h2>
                            <div id="collapseEight" class="accordion-collapse collapse show" aria-labelledby="headingEight"
                            data-bs-parent="#accordionExample">
                            <div class="accordion-body">
                                <table class="table table-striped table-bordered">
                                    <thead class="table-dark">
                                        <tr>
                                            <th class="fw-bold">Cantidad</th>
                                            <th>Nombre del artículo</th>
                                            <th class="text-center">Descripción del artículo</th>
                                        </tr>
                                    </thead>
                                    <tbody>
                                        <tr>
                                            <td class="text-center"><input type="number" class="form-control" id="cantidad" disabled>
                                            </td>
                                            <td class="text-center"><input type="text" class="form-control" id="nom_art"  disabled>
                                            </td>
                                            <td class="text-center"><input type="text" class="form-control" id="desc_art" disabled>
                                            </td>
                                        </tr>
                                    </tbody>
                                </table>
                            </div>
                        </div>
                        </div>                    
                </div>

si me pueden ayudar a mostrar datos se los agradeceria mucho
Responder
#2
Yo no veo en el codigo de Python que allas registrado tu blueprint.

Por ejemplo. Yo tengo un blueprint en un file main.py

Código:
main = Blueprint("main", __name__)

Entonces en el file donde tengo el app flask algo esto:

Código:
app = Flask(__name__)

from .main import main as main_blueprint

app.register_blueprint(main_blueprint)
Responder
#3
si tengo declarado el blueprint perro solo me arroja estos datos: 
'id_solicitud'solicitud[0],
            'folio'solicitud[1],
            'nombre_empresa'solicitud[3],
            'area_empresa'solicitud[4],
            'telefono_contacto'solicitud[5],
            'correo_electronico'solicitud[6]
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)