<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Foros Python - Web]]></title>
		<link>https://foro.recursospython.com/</link>
		<description><![CDATA[Foros Python - https://foro.recursospython.com]]></description>
		<pubDate>Wed, 06 May 2026 12:20:47 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Cómo insertar registros en tablas relacionadas?]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1511</link>
			<pubDate>Tue, 10 Dec 2024 13:10:16 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1653">efelix</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1511</guid>
			<description><![CDATA[Saludos a la comunidad. Soy nuevo acá. Estoy desarrollando un proyecto flask y me he quedado varado en el CRUD de uno de los subsistemas del mismo. Tengo una tabla MySql llamada listservicios, esta tabla se relaciona con dos mas, la tabla umedida y la tabla gtrabajo. La tabla listservicios es el lado varios de la relación, las otras dos son el lado uno. Esta tiene los datos relativos a servicios tales como nombre, precio y además las llaves foráneas de las otras dos tablas. Una unidad de medida tiene varios servicios, al igual que un grupo de trabajo tiene varios servicios. Estoy intentando insertar un registro nuevo en la tabla listservicios, mediante el siguiente código:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>@app.route('/servicios/crear')<br />
def crear_servicio():<br />
    conexion_MySQLdb = conectionBD() # Instanciando la conexión<br />
    mycursor = conexion_MySQLdb.cursor(dictionary=True)<br />
    querySQL = ("""SELECT DISTINCTROW umedida.nombreum, gtrabajo.nombregt FROM listservicios<br />
                INNER JOIN umedida ON listservicios.idmedida = umedida.idmedida INNER JOIN gtrabajo ON listservicios.idgtrabajo = gtrabajo.idgtrabajo""")<br />
    mycursor.execute(querySQL)<br />
    datos = mycursor.fetchall()<br />
    conexion_MySQLdb.close()<br />
    return render_template("modulo_servicios/create.html", servicios = datos)</code></div></div>  Esta es la ruta donde llamo a la vista create.html que contiene el formulario:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="card"&gt;<br />
  &lt;div class="card-header"&gt;Agregar Servicio&lt;/div&gt;<br />
  &lt;div class="card-body"&gt;<br />
    &lt;form action="/servicios/crear/guardar" method="post"&gt;<br />
      &lt;div class="mb-3"&gt;<br />
        &lt;label for="" class="form-label"&gt;Nombre&lt;/label&gt;<br />
        &lt;input<br />
          type="text"<br />
          class="form-control"<br />
          name="nombre"<br />
          id=""<br />
          aria-describedby="helpId"<br />
          placeholder="Ingrese el nombre del servicio"<br />
        /&gt;<br />
      &lt;/div&gt;<br />
<br />
      &lt;div class="mb-3"&gt;<br />
        &lt;label for="" class="form-label"&gt;Precio MN&lt;/label&gt;<br />
        &lt;input<br />
          type="number"<br />
          class="form-control"<br />
          name="preciomn"<br />
          id=""<br />
          aria-describedby="helpId"<br />
          placeholder="Precio del servicio en MN"<br />
        /&gt;<br />
      &lt;/div&gt;<br />
<br />
      &lt;div class="mb-3"&gt;<br />
        &lt;label for="" class="form-label"&gt;Precio CUC&lt;/label&gt;<br />
        &lt;input<br />
          type="number"<br />
          class="form-control"<br />
          name="preciocuc"<br />
          id=""<br />
          aria-describedby="helpId"<br />
          placeholder="Precio del servicicio en CUC"<br />
        /&gt;<br />
      &lt;/div&gt;<br />
<br />
      &lt;div class="form-group"&gt;<br />
        &lt;label for="txtUnidadMedida"&gt;Unidades de Medida&lt;/label&gt;<br />
        &lt;select class="form-control" name="idmedida" id="idmedida"&gt;<br />
          {% for o in servicios %}<br />
          &lt;option value="{{ o.idmedida }}"&gt;{{ o.nombreum }}&lt;/option&gt;<br />
          {% endfor %}<br />
        &lt;/select&gt;<br />
      &lt;/div&gt;<br />
<br />
      &lt;div class="form-group"&gt;<br />
        &lt;label for="txtGrupoTrabajo"&gt;Grupos de Trabajo&lt;/label&gt;<br />
        &lt;select class="form-control" name="idgtrabajo" id="idgtrabajo"&gt;<br />
          {% for g in servicios %}<br />
          &lt;option value="{{ g.idgtrabajo }}"&gt;{{ g.nombregt }}&lt;/option&gt;<br />
          {% endfor %}<br />
        &lt;/select&gt;<br />
      &lt;/div&gt;<br />
<br />
      &lt;button type="submit" class="btn btn-primary"&gt;Guardar&lt;/button&gt;<br />
    &lt;/form&gt;<br />
  &lt;/div&gt;<br />
&lt;/div&gt;</code></div></div>Acá está el formulario para la inserción de los datos. El primer problema que tengo acá con los dos select option es que me muestran todos los registros duplicados de las tablas umedida y gtrabajo. umedida solo tiene 8 registros, mientras que la gtrabajo solo tiene 4 registros. No he logrado que solo me muestre esos registros no sé el problema en la forma en la que construyo la query. Por otra parte cuando le doy al botón guardar de este formulario me lanza un error, el siguiente error:<br />
DatabaseError mysql.connector.errors.DatabaseError: 1366 (HY000): Incorrect integer value: '' for column 'idmedida' at row 1. <br />
Esta es mi ruta guardar:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>@app.route('/servicios/crear/guardar', methods=['POST'])<br />
def guardar_servicio():<br />
    nombre = request.form['nombre']<br />
    mn = request.form['preciomn']<br />
    cuc = request.form['preciocuc']<br />
    idmedida = request.form['idmedida']<br />
    idgtrabajo = request.form['idgtrabajo']<br />
    <br />
    print(f'Nombre: {nombre}, MN: {mn}, CUC: {cuc}, IdMedida: {idmedida}, IdTrabajo: {idgtrabajo}')<br />
    <br />
    sql="INSERT INTO listservicios(nombre, mn, cuc, idmedida, idgtrabajo) VALUES (%s, %s, %s, %s, %s)"<br />
    datos=(nombre, mn, cuc, idmedida, idgtrabajo)<br />
    conexion_MySQLdb = conectionBD() # Instanciando la conexión<br />
    mycursor = conexion_MySQLdb.cursor(dictionary=True)<br />
    mycursor.execute(sql, datos)<br />
    conexion_MySQLdb.commit()<br />
    return redirect('/servicios')   </code></div></div><br />
Cuando reviso los datos que introduzco en el formulario veo que me coge nombre, mn, cuc pero me manda vacio idmedida e idgtrabajo de ahí el error. Los select option, a pesar de los problemas que les plantee se llenan con la información correspondiente, desconozco porque no coge el id de cada uno y los inserta en la tabla listservicios que lleva idservicio de tipo autoincrementable por eso no lo mando, además de nombre, cuc, mn, idmedida, idgtrabajo. Espero no haberme extendido mucho pero expongo todo lo que puedo para ser entendido. Muchas gracias. Disculpen la longitud.]]></description>
			<content:encoded><![CDATA[Saludos a la comunidad. Soy nuevo acá. Estoy desarrollando un proyecto flask y me he quedado varado en el CRUD de uno de los subsistemas del mismo. Tengo una tabla MySql llamada listservicios, esta tabla se relaciona con dos mas, la tabla umedida y la tabla gtrabajo. La tabla listservicios es el lado varios de la relación, las otras dos son el lado uno. Esta tiene los datos relativos a servicios tales como nombre, precio y además las llaves foráneas de las otras dos tablas. Una unidad de medida tiene varios servicios, al igual que un grupo de trabajo tiene varios servicios. Estoy intentando insertar un registro nuevo en la tabla listservicios, mediante el siguiente código:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>@app.route('/servicios/crear')<br />
def crear_servicio():<br />
    conexion_MySQLdb = conectionBD() # Instanciando la conexión<br />
    mycursor = conexion_MySQLdb.cursor(dictionary=True)<br />
    querySQL = ("""SELECT DISTINCTROW umedida.nombreum, gtrabajo.nombregt FROM listservicios<br />
                INNER JOIN umedida ON listservicios.idmedida = umedida.idmedida INNER JOIN gtrabajo ON listservicios.idgtrabajo = gtrabajo.idgtrabajo""")<br />
    mycursor.execute(querySQL)<br />
    datos = mycursor.fetchall()<br />
    conexion_MySQLdb.close()<br />
    return render_template("modulo_servicios/create.html", servicios = datos)</code></div></div>  Esta es la ruta donde llamo a la vista create.html que contiene el formulario:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&lt;div class="card"&gt;<br />
  &lt;div class="card-header"&gt;Agregar Servicio&lt;/div&gt;<br />
  &lt;div class="card-body"&gt;<br />
    &lt;form action="/servicios/crear/guardar" method="post"&gt;<br />
      &lt;div class="mb-3"&gt;<br />
        &lt;label for="" class="form-label"&gt;Nombre&lt;/label&gt;<br />
        &lt;input<br />
          type="text"<br />
          class="form-control"<br />
          name="nombre"<br />
          id=""<br />
          aria-describedby="helpId"<br />
          placeholder="Ingrese el nombre del servicio"<br />
        /&gt;<br />
      &lt;/div&gt;<br />
<br />
      &lt;div class="mb-3"&gt;<br />
        &lt;label for="" class="form-label"&gt;Precio MN&lt;/label&gt;<br />
        &lt;input<br />
          type="number"<br />
          class="form-control"<br />
          name="preciomn"<br />
          id=""<br />
          aria-describedby="helpId"<br />
          placeholder="Precio del servicio en MN"<br />
        /&gt;<br />
      &lt;/div&gt;<br />
<br />
      &lt;div class="mb-3"&gt;<br />
        &lt;label for="" class="form-label"&gt;Precio CUC&lt;/label&gt;<br />
        &lt;input<br />
          type="number"<br />
          class="form-control"<br />
          name="preciocuc"<br />
          id=""<br />
          aria-describedby="helpId"<br />
          placeholder="Precio del servicicio en CUC"<br />
        /&gt;<br />
      &lt;/div&gt;<br />
<br />
      &lt;div class="form-group"&gt;<br />
        &lt;label for="txtUnidadMedida"&gt;Unidades de Medida&lt;/label&gt;<br />
        &lt;select class="form-control" name="idmedida" id="idmedida"&gt;<br />
          {% for o in servicios %}<br />
          &lt;option value="{{ o.idmedida }}"&gt;{{ o.nombreum }}&lt;/option&gt;<br />
          {% endfor %}<br />
        &lt;/select&gt;<br />
      &lt;/div&gt;<br />
<br />
      &lt;div class="form-group"&gt;<br />
        &lt;label for="txtGrupoTrabajo"&gt;Grupos de Trabajo&lt;/label&gt;<br />
        &lt;select class="form-control" name="idgtrabajo" id="idgtrabajo"&gt;<br />
          {% for g in servicios %}<br />
          &lt;option value="{{ g.idgtrabajo }}"&gt;{{ g.nombregt }}&lt;/option&gt;<br />
          {% endfor %}<br />
        &lt;/select&gt;<br />
      &lt;/div&gt;<br />
<br />
      &lt;button type="submit" class="btn btn-primary"&gt;Guardar&lt;/button&gt;<br />
    &lt;/form&gt;<br />
  &lt;/div&gt;<br />
&lt;/div&gt;</code></div></div>Acá está el formulario para la inserción de los datos. El primer problema que tengo acá con los dos select option es que me muestran todos los registros duplicados de las tablas umedida y gtrabajo. umedida solo tiene 8 registros, mientras que la gtrabajo solo tiene 4 registros. No he logrado que solo me muestre esos registros no sé el problema en la forma en la que construyo la query. Por otra parte cuando le doy al botón guardar de este formulario me lanza un error, el siguiente error:<br />
DatabaseError mysql.connector.errors.DatabaseError: 1366 (HY000): Incorrect integer value: '' for column 'idmedida' at row 1. <br />
Esta es mi ruta guardar:<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>@app.route('/servicios/crear/guardar', methods=['POST'])<br />
def guardar_servicio():<br />
    nombre = request.form['nombre']<br />
    mn = request.form['preciomn']<br />
    cuc = request.form['preciocuc']<br />
    idmedida = request.form['idmedida']<br />
    idgtrabajo = request.form['idgtrabajo']<br />
    <br />
    print(f'Nombre: {nombre}, MN: {mn}, CUC: {cuc}, IdMedida: {idmedida}, IdTrabajo: {idgtrabajo}')<br />
    <br />
    sql="INSERT INTO listservicios(nombre, mn, cuc, idmedida, idgtrabajo) VALUES (%s, %s, %s, %s, %s)"<br />
    datos=(nombre, mn, cuc, idmedida, idgtrabajo)<br />
    conexion_MySQLdb = conectionBD() # Instanciando la conexión<br />
    mycursor = conexion_MySQLdb.cursor(dictionary=True)<br />
    mycursor.execute(sql, datos)<br />
    conexion_MySQLdb.commit()<br />
    return redirect('/servicios')   </code></div></div><br />
Cuando reviso los datos que introduzco en el formulario veo que me coge nombre, mn, cuc pero me manda vacio idmedida e idgtrabajo de ahí el error. Los select option, a pesar de los problemas que les plantee se llenan con la información correspondiente, desconozco porque no coge el id de cada uno y los inserta en la tabla listservicios que lleva idservicio de tipo autoincrementable por eso no lo mando, además de nombre, cuc, mn, idmedida, idgtrabajo. Espero no haberme extendido mucho pero expongo todo lo que puedo para ser entendido. Muchas gracias. Disculpen la longitud.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Mostrar datos en Flask con blueprints]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1487</link>
			<pubDate>Thu, 18 Jul 2024 16:57:33 -0700</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1588">daniel lr</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1487</guid>
			<description><![CDATA[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: <br />
este es el js: <br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&#36;(document).ready(function () {<br />
  &#36;('#Solicitudes').DataTable({<br />
      language: {<br />
          url: 'https://cdn.datatables.net/plug-ins/2.0.5/i18n/es-ES.json'<br />
      }<br />
  });<br />
});<br />
&#36;(document).ready(function() {<br />
  &#36;('.obtener-solicitud').click(function() {<br />
    var id_solicitud = &#36;(this).data('id');<br />
    // Petición AJAX para obtener datos generales de la solicitud<br />
    &#36;.ajax({<br />
      url: '/obtener_solicitud_json/' + id_solicitud,<br />
      type: 'GET',<br />
      success: function(data) {<br />
        &#36;('#folio').val(data.folio);<br />
        &#36;('#nombre_empresa').val(data.nombre_empresa);<br />
        &#36;('#area_empresa').val(data.area_empresa);<br />
        &#36;('#telefono_contacto').val(data.telefono_contacto);<br />
        &#36;('#correo_electronico').val(data.correo_electronico);<br />
        // Mostrar modal de solicitud<br />
        &#36;('#ModalSolicitud').modal('show');<br />
        // Llamar a función para obtener todos los datos relacionados con la solicitud<br />
        obtenerDatosRelacionados(id_solicitud);<br />
      },<br />
      error: function(xhr, status, error) {<br />
        console.error(xhr.responseText);<br />
      }<br />
    });<br />
  });<br />
  // Función para obtener todos los datos relacionados con la solicitud<br />
  function obtenerDatosRelacionados(id_solicitud) {<br />
    // Petición AJAX para obtener datos de inspección<br />
    &#36;.ajax({<br />
      url: '/obtener_inspeccion_json/' + id_solicitud,<br />
      type: 'GET',<br />
      success: function(data) {<br />
        &#36;('#p_inspeccion_select').val(data.p_inspeccion_select);<br />
        &#36;('#hyf_acceso').val(data.hyf_acceso);<br />
      },<br />
      error: function(xhr, status, error) {<br />
        console.error(xhr.responseText);<br />
      }<br />
    });<br />
    // Petición AJAX para obtener datos de actividades<br />
    &#36;.ajax({<br />
      url: '/obtener_actividad_json/' + desc_act,<br />
      type: 'GET',<br />
      success: function(data) {<br />
        &#36;('#desc_act').val(data.desc_act);<br />
        &#36;('#lug_act').val(data.lug_act);<br />
      },<br />
      error: function(xhr, status, error) {<br />
        console.error(xhr.responseText);<br />
      }<br />
    });<br />
    // Petición AJAX para obtener datos de personas que ingresan<br />
    &#36;.ajax({<br />
      url: '/obtener_personas_json/' + nombre,<br />
      type: 'GET',<br />
      success: function(data) {<br />
        &#36;('#nombre').val(data.nombre);<br />
        &#36;('#iden').val(data.identificacion);<br />
      },<br />
      error: function(xhr, status, error) {<br />
        console.error(xhr.responseText);<br />
      }<br />
    });<br />
    // Petición AJAX para obtener datos de vehículos<br />
    &#36;.ajax({<br />
      url: '/obtener_vehiculo_json/' + vehiculo,<br />
      type: 'GET',<br />
      success: function(data) {<br />
        &#36;('#vehiculo').val(data.vehiculo);<br />
        &#36;('#marca').val(data.marca);<br />
        &#36;('#modelo').val(data.modelo);<br />
        &#36;('#color').val(data.color);<br />
        &#36;('#año').val(data.año);<br />
        &#36;('#matricula').val(data.matricula);<br />
        &#36;('#balizado').val(data.balizado);<br />
        <br />
        // Manejo de campo tiav como imagen, archivo pdf, etc.<br />
        if (data.tiav) {<br />
          &#36;('#imagenTiav').attr('src', 'data:image/png;base64,' + data.tiav); // Suponiendo que es una imagen o un pdf<br />
        }<br />
      },<br />
      error: function(xhr, status, error) {<br />
        console.error(xhr.responseText);<br />
      }<br />
    });<br />
    // Petición AJAX para obtener datos de artículos<br />
    &#36;.ajax({<br />
      url: '/obtener_articulo_json/' + cantidad, <br />
      type: 'GET',<br />
      success: function(data) {<br />
        &#36;('#cantidad').val(data.cantidad);<br />
        &#36;('#nom_art').val(data.nom_art);<br />
        &#36;('#desc_art').val(data.desc_art);<br />
      },<br />
      error: function(xhr, status, error) {<br />
        console.error(xhr.responseText);<br />
      }<br />
    });<br />
  }<br />
}); </code></div></div><br />
este es el python: <br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>solicitud = Blueprint('solicitud', __name__)<br />
<br />
@solicitud.route("/obtener_solicitud_json/&lt;int:id_solicitud&gt;", methods=['GET'])<br />
def obtener_solicitud_json(id_solicitud):<br />
    cursor = mysql.connection.cursor()<br />
    cursor.execute("SELECT * FROM folios WHERE id_solicitud = %s", (id_solicitud,))<br />
    solicitud = cursor.fetchone()<br />
    cursor.close()<br />
    if solicitud:<br />
        resultado = {<br />
            'id_solicitud': solicitud[0],<br />
            'folio': solicitud[1],<br />
            'nombre_empresa': solicitud[3],<br />
            'area_empresa': solicitud[4],<br />
            'telefono_contacto': solicitud[5],<br />
            'correo_electronico': solicitud[6]<br />
        }<br />
        return jsonify(resultado)<br />
    else:<br />
        return jsonify({'error': 'Solicitud no encontrada'}), 404<br />
    <br />
# Consulta 2:  p_inspeccion por p_inspecion_select<br />
@solicitud.route("/obtener_inspeccion_json/&lt;p_inspecion_select&gt;", methods=['GET'])<br />
def obtener_inspeccion_json(p_inspecion_select):<br />
    cursor = mysql.connection.cursor()<br />
    cursor.execute("SELECT * FROM p_inspeccion WHERE p_inspecion_select = %s", (p_inspecion_select,))<br />
    solicitud = cursor.fetchone()<br />
    cursor.close()<br />
    if solicitud:<br />
        resultado = {<br />
            'p_inspecion_select': solicitud[0],<br />
            'hyf_acceso': solicitud[2]<br />
        }<br />
        return jsonify(resultado)<br />
    else:<br />
        return jsonify({'error': 'Inspección no encontrada'}), 404<br />
    <br />
# Consulta 3: Actividades <br />
@solicitud.route("/obtener_actividad_json/&lt;desc_act&gt;", methods=['GET'])<br />
def obtener_actividad_json(desc_act):<br />
    cursor = mysql.connection.cursor()<br />
    cursor.execute("SELECT * FROM actividades WHERE desc_act = %s", (desc_act,))<br />
    solicitud = cursor.fetchone()<br />
    cursor.close()<br />
    if solicitud:<br />
        resultado = {<br />
            'desc_act': solicitud[0],<br />
            'lug_act': solicitud[1]<br />
        }<br />
        return jsonify(resultado)<br />
    else:<br />
        return jsonify({'error': 'Actividad no encontrada'}), 404<br />
# Consulta 4: Personas que ingresan por nombre<br />
@solicitud.route("/obtener_personas_json/&lt;nombre&gt;", methods=['GET'])<br />
def obtener_personas_json(nombre):<br />
    cursor = mysql.connection.cursor()<br />
    cursor.execute("SELECT * FROM personas_ingresan WHERE nombre = %s", (nombre,))<br />
    solicitud = cursor.fetchone()<br />
    cursor.close()<br />
    if solicitud:<br />
        resultado = {<br />
            'nombre': solicitud[0],<br />
            'identificacion': solicitud[1],<br />
        }<br />
        return jsonify(resultado)<br />
    else:<br />
        return jsonify({'error': 'Persona no encontrada'}), 404<br />
# Consulta 5: Vehículos <br />
@solicitud.route("/obtener_vehiculo_json/&lt;vehiculo&gt;", methods=['GET'])<br />
def obtener_vehiculo_json(vehiculo):<br />
    cursor = mysql.connection.cursor()<br />
    cursor.execute("SELECT * FROM vehiculos WHERE vehiculo = %s", (vehiculo,))<br />
    solicitud = cursor.fetchone()<br />
    cursor.close()<br />
    if solicitud:<br />
        resultado = {<br />
            'vehiculo': solicitud[0],<br />
            'marca': solicitud[1],<br />
            'modelo': solicitud[2],<br />
            'color': solicitud[3],<br />
            'año': solicitud[4],<br />
            'matricula': solicitud[5],<br />
            'balizado': solicitud[6],<br />
            'tiav': solicitud[7],<br />
        }<br />
        return jsonify(resultado)<br />
    else:<br />
        return jsonify({'error': 'Vehículo no encontrado'}), 404<br />
# Consulta 6: Artículos<br />
@solicitud.route("/obtener_articulo_json/&lt;int:cantidad&gt;", methods=['GET'])<br />
def obtener_articulo_json(cantidad):<br />
    cursor = mysql.connection.cursor()<br />
    cursor.execute("SELECT * FROM listado_articulos WHERE cantidad = %s", (cantidad,))<br />
    solicitud = cursor.fetchone()<br />
    cursor.close()<br />
    if solicitud:<br />
        resultado = {<br />
            'cantidad': solicitud[0],<br />
            'nom_art': solicitud[1],<br />
            'desc_art': solicitud[2]<br />
        }<br />
        return jsonify(resultado)<br />
    else:<br />
        return jsonify({'error': 'Artículo no encontrado'}), 404</code></div></div><br />
y por ultimo aqui es en donde quiero que se muestren los datos pero unicamente me salen los valores de la empresa:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code> &lt;div class="modal fade" id="ModalSolicitud" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"&gt;<br />
        &lt;div class="modal-dialog modal-xl modal-dialog-scrollable"&gt;<br />
            &lt;div class="modal-content"&gt;<br />
                &lt;div class="modal-header"&gt;<br />
                    &lt;h1 class="modal-title fs-5" id="exampleModalLabel"&gt;Solicitud de Ingreso&lt;/h1&gt;<br />
                    &lt;button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"&gt;&lt;/button&gt;<br />
                &lt;/div&gt;<br />
                &lt;div class="modal-body"&gt;<br />
                    &lt;div class="mb-3 row"&gt; <br />
                        &lt;label for="staticEmail" class="col-sm-2 col-form-label"&gt;Folio&lt;/label&gt;<br />
                        &lt;div class="col-sm-10"&gt;<br />
                            &lt;input type="text" readonly class="form-control-plaintext" id="folio"&gt;<br />
                        &lt;/div&gt;<br />
                    &lt;/div&gt;<br />
                    &lt;div class="accordion" id="accordionExample"&gt;<br />
                        &lt;!-- Datos de la empresa --&gt;<br />
                        &lt;div class="accordion-item "&gt;<br />
                            &lt;h2 class="accordion-header" id="headingOne"&gt;<br />
                                &lt;button class="accordion-button " type="button" data-bs-toggle="collapse"<br />
                                    data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne"&gt;<br />
                                    Datos de la empresa<br />
                                &lt;/button&gt;<br />
                            &lt;/h2&gt;<br />
                            &lt;div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne"<br />
                                data-bs-parent="#accordionExample"&gt;<br />
                                &lt;div class="accordion-body"&gt;<br />
                                    &lt;div class="row g-3"&gt;<br />
                                        &lt;div class="col-md-6"&gt;<br />
                                            &lt;label for="empresa" class="form-label"&gt;Nombre de la empresa&lt;/label&gt;<br />
                                            &lt;input type="text" class="form-control" id="nombre_empresa" disabled&gt;<br />
                                        &lt;/div&gt;<br />
                                        &lt;div class="col-md-6"&gt;<br />
                                            &lt;label for="area" class="form-label"&gt;Área&lt;/label&gt;<br />
                                            &lt;input type="text" class="form-control" id="area_empresa" disabled&gt;<br />
                                        &lt;/div&gt;<br />
                                    &lt;/div&gt;<br />
                                &lt;/div&gt;<br />
                            &lt;/div&gt;<br />
                        &lt;/div&gt;<br />
                        &lt;!-- Datos de contacto --&gt;<br />
                        &lt;div class="accordion-item"&gt;<br />
                            &lt;h2 class="accordion-header" id="headingTwo"&gt;<br />
                                &lt;button class="accordion-button" type="button" data-bs-toggle="collapse"<br />
                                    data-bs-target="#collapseTwo" aria-expanded="true" aria-controls="collapseTwo"&gt;<br />
                                    Datos de contacto<br />
                                &lt;/button&gt;<br />
                            &lt;/h2&gt;<br />
                            &lt;div id="collapseTwo" class="accordion-collapse collapse show" aria-labelledby="headingTwo"<br />
                                data-bs-parent="#accordionExample"&gt;<br />
                                &lt;div class="accordion-body"&gt;<br />
                                    &lt;div class="row g-3"&gt;<br />
                                        &lt;div class="col-md-6"&gt;<br />
                                            &lt;label for="telefono" class="form-label"&gt;Teléfono&lt;/label&gt;<br />
                                            &lt;input type="tel" class="form-control" id="telefono_contacto" disabled&gt;<br />
                                        &lt;/div&gt;<br />
                                        &lt;div class="col-md-6"&gt;<br />
                                            &lt;label for="correo_electronico" class="form-label"&gt;Correo<br />
                                                Electrónico&lt;/label&gt;<br />
                                            &lt;input type="email" class="form-control" id="correo_electronico"<br />
                                                name="correo_electronico" disabled&gt;<br />
                                        &lt;/div&gt;<br />
                                    &lt;/div&gt;<br />
                                &lt;/div&gt;<br />
                            &lt;/div&gt;<br />
                        &lt;/div&gt;<br />
                    &lt;!-- Punto de inspección --&gt;<br />
                    &lt;div class="accordion-item"&gt;<br />
                        &lt;h2 class="accordion-header" id="headingFour"&gt;<br />
                            &lt;button class="accordion-button" type="button" data-bs-toggle="collapse"<br />
                                data-bs-target="#collapseFour" aria-expanded="true" aria-controls="collapseFour"&gt;<br />
                                Punto de inspección<br />
                            &lt;/button&gt;<br />
                        &lt;/h2&gt;<br />
                        &lt;div id="collapseFour" class="accordion-collapse collapse show" aria-labelledby="headingFour"<br />
                            data-bs-parent="#accordionExample"&gt;<br />
                            &lt;div class="accordion-body"&gt;<br />
                                &lt;div class="row g-3"&gt;<br />
                                    &lt;div class="col-md-6"&gt;<br />
                                        &lt;label for="p_inspecion_select" class="form-label"&gt;Puntos de inspección a cruzar&lt;/label&gt;<br />
                                        &lt;input type="text" class="form-control" id="p_inspecion_select"  disabled&gt;<br />
                                    &lt;/div&gt;<br />
                                &lt;/div&gt;<br />
                            &lt;/div&gt;<br />
                        &lt;/div&gt;<br />
                    &lt;/div&gt;<br />
                    &lt;!-- Datos del responsable --&gt;<br />
                    &lt;div class="accordion-item"&gt;<br />
                        &lt;h2 class="accordion-header" id="headingFive"&gt;<br />
                            &lt;button class="accordion-button" type="button" data-bs-toggle="collapse"<br />
                                data-bs-target="#collapseFive" aria-expanded="true" aria-controls="collapseFive"&gt;<br />
                                Fecha y hora de acceso a los puntos de inspeccion<br />
                            &lt;/button&gt;<br />
                        &lt;/h2&gt;<br />
                        &lt;div id="collapseFive" class="accordion-collapse collapse show" aria-labelledby="headingFive"<br />
                            data-bs-parent="#accordionExample"&gt;<br />
                            &lt;div class="accordion-body"&gt;<br />
                                &lt;div class="row g-3"&gt;<br />
                                    &lt;div class="col-md-6"&gt;<br />
                                        &lt;label for="telefono" class="form-label"&gt;Fecha y hora de acceso&lt;/label&gt;<br />
                                        &lt;input type="datetime-local" class="form-control" id="hyf_acceso"  disabled&gt;<br />
                                    &lt;/div&gt;<br />
                                &lt;/div&gt;<br />
                            &lt;/div&gt;<br />
                        &lt;/div&gt;<br />
                    &lt;/div&gt;<br />
                    &lt;!--actividades--&gt;<br />
                    &lt;div class="accordion-item"&gt;<br />
                        &lt;h2 class="accordion-header" id="headingSix"&gt;<br />
                            &lt;button class="accordion-button" type="button" data-bs-toggle="collapse"<br />
                                data-bs-target="#collapseSix" aria-expanded="true" aria-controls="collapseSix"&gt;<br />
                                Actividades a realizar<br />
                            &lt;/button&gt;<br />
                        &lt;/h2&gt;<br />
                        &lt;div id="collapseSix" class="accordion-collapse collapse show" aria-labelledby="headingSix"<br />
                            data-bs-parent="#accordionExample"&gt;<br />
                            &lt;div class="accordion-body"&gt;<br />
                                &lt;div class="row g-3"&gt;<br />
                                    &lt;div class="col-md-6"&gt;<br />
                                        &lt;label for="Descripción" class="form-label"&gt;Descripción de actividades&lt;/label&gt;<br />
                                        &lt;input type="text" class="form-control" id="desc_act"  disabled&gt;<br />
                                    &lt;/div&gt;<br />
                                    &lt;div class="col-md-6"&gt;<br />
                                        &lt;label for="lug_act" class="form-label"&gt;Lugar de actividades&lt;/label&gt;<br />
                                        &lt;input type="text" class="form-control" id="lug_act" disabled&gt;<br />
                                    &lt;/div&gt;<br />
                                &lt;/div&gt;<br />
                            &lt;/div&gt;<br />
                        &lt;/div&gt;<br />
                    &lt;/div&gt;<br />
                        &lt;!-- Datos de identificación --&gt;<br />
                        &lt;div class="accordion-item"&gt;<br />
                            &lt;h2 class="accordion-header" id="headingThree"&gt;<br />
                                &lt;button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseThree"<br />
                                    aria-expanded="true" aria-controls="collapseThree"&gt;<br />
                                    Datos de identificación<br />
                                &lt;/button&gt;<br />
                            &lt;/h2&gt;<br />
                            &lt;div id="collapseThree" class="accordion-collapse collapse show" aria-labelledby="headingThree"<br />
                                data-bs-parent="#accordionExample"&gt;<br />
                                &lt;div class="accordion-body"&gt;<br />
                                    &lt;table class="table table-striped table-bordered"&gt;<br />
                                        &lt;thead class="table-dark"&gt;<br />
                                            &lt;tr&gt;<br />
                                                &lt;th class="fw-bold"&gt;Nombre completo&lt;/th&gt;<br />
                                                &lt;th&gt;Tipo de identificación&lt;/th&gt;<br />
                                            &lt;/tr&gt;<br />
                                        &lt;/thead&gt;<br />
                                        &lt;tbody&gt;<br />
                                            &lt;tr&gt;<br />
                                                &lt;td&gt;&lt;input type="text" class="form-control" id="nombre"  disabled&gt;&lt;/td&gt;<br />
                                                &lt;td&gt;&lt;input type="text" class="form-control" id="iden" disabled&gt;&lt;/td&gt;<br />
                                            &lt;/tr&gt;<br />
                                        &lt;/tbody&gt;<br />
                                    &lt;/table&gt;<br />
                                &lt;/div&gt;<br />
                            &lt;/div&gt;<br />
                        &lt;/div&gt;<br />
                    &lt;!-- Datos del Vehiculo --&gt;<br />
                    &lt;div class="accordion-item"&gt;<br />
                        &lt;h2 class="accordion-header" id="headingSeven"&gt;<br />
                            &lt;button class="accordion-button" type="button" data-bs-toggle="collapse"<br />
                                data-bs-target="#collapseSeven" aria-expanded="true" aria-controls="collapseSeven"&gt;<br />
                                Vehiculos<br />
                            &lt;/button&gt;<br />
                        &lt;/h2&gt;<br />
                        &lt;div id="collapseSeven" class="accordion-collapse collapse show" aria-labelledby="headingSeven" data-bs-parent="#accordionExample"&gt;<br />
    &lt;div class="row"&gt;<br />
        &lt;div class="col-md-6"&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Se accederá un vehículo&lt;/label&gt;<br />
                &lt;input type="text" class="form-control" id="vehiculo"  disabled&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Marca&lt;/label&gt;<br />
                &lt;input type="text" class="form-control" id="marca"  disabled&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Modelo&lt;/label&gt;<br />
                &lt;input type="text" class="form-control" id="modelo"  disabled&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Color&lt;/label&gt;<br />
                &lt;input type="text" class="form-control" id="color"  disabled&gt;<br />
            &lt;/div&gt;<br />
        &lt;/div&gt;<br />
        &lt;div class="col-md-6"&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Año&lt;/label&gt;<br />
                &lt;input type="text" class="form-control" id="año"  disabled&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Matricula&lt;/label&gt;<br />
                &lt;input type="text" class="form-control" id="matricula"  disabled&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Cuenta con balizado&lt;/label&gt;<br />
                &lt;input type="text" class="form-control" id="balizado"  disabled&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Tiav&lt;/label&gt;<br />
                &lt;a href="#" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight"&gt;Ver&lt;/a&gt;<br />
                &lt;!-- Offcanvas --&gt;<br />
                &lt;div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasRight" aria-labelledby="offcanvasRightLabel"&gt;<br />
                    &lt;div class="offcanvas-header"&gt;<br />
                        &lt;h5 class="offcanvas-title" id="offcanvasRightLabel"&gt;Tiav&lt;/h5&gt;<br />
                        &lt;button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"&gt;&lt;/button&gt;<br />
                    &lt;/div&gt;<br />
                    &lt;div class="offcanvas-body"&gt;<br />
                        &lt;!-- Aquí se va a mostrar la imagen de la tiav --&gt;<br />
                        &lt;img id="imagenTiav" class="img-fluid"&gt;<br />
                    &lt;/div&gt;<br />
                &lt;/div&gt;<br />
            &lt;/div&gt;<br />
        &lt;/div&gt;<br />
    &lt;/div&gt;<br />
&lt;/div&gt;<br />
                    &lt;/div&gt; <br />
                    &lt;!--articulos--&gt;<br />
                        &lt;div class="accordion-item"&gt;<br />
                            &lt;h2 class="accordion-header" id="headingEight"&gt;<br />
                                &lt;button class="accordion-button" type="button" data-bs-toggle="collapse"<br />
                                    data-bs-target="#collapseEight" aria-expanded="true" aria-controls="collapseEight"&gt;<br />
                                    Artículo<br />
                                &lt;/button&gt;<br />
                            &lt;/h2&gt;<br />
                            &lt;div id="collapseEight" class="accordion-collapse collapse show" aria-labelledby="headingEight"<br />
                            data-bs-parent="#accordionExample"&gt;<br />
                            &lt;div class="accordion-body"&gt;<br />
                                &lt;table class="table table-striped table-bordered"&gt;<br />
                                    &lt;thead class="table-dark"&gt;<br />
                                        &lt;tr&gt;<br />
                                            &lt;th class="fw-bold"&gt;Cantidad&lt;/th&gt;<br />
                                            &lt;th&gt;Nombre del artículo&lt;/th&gt;<br />
                                            &lt;th class="text-center"&gt;Descripción del artículo&lt;/th&gt;<br />
                                        &lt;/tr&gt;<br />
                                    &lt;/thead&gt;<br />
                                    &lt;tbody&gt;<br />
                                        &lt;tr&gt;<br />
                                            &lt;td class="text-center"&gt;&lt;input type="number" class="form-control" id="cantidad" disabled&gt;<br />
                                            &lt;/td&gt;<br />
                                            &lt;td class="text-center"&gt;&lt;input type="text" class="form-control" id="nom_art"  disabled&gt;<br />
                                            &lt;/td&gt;<br />
                                            &lt;td class="text-center"&gt;&lt;input type="text" class="form-control" id="desc_art" disabled&gt;<br />
                                            &lt;/td&gt;<br />
                                        &lt;/tr&gt;<br />
                                    &lt;/tbody&gt;<br />
                                &lt;/table&gt;<br />
                            &lt;/div&gt;<br />
                        &lt;/div&gt;<br />
                        &lt;/div&gt;                    <br />
                &lt;/div&gt;</code></div></div><br />
si me pueden ayudar a mostrar datos se los agradeceria mucho]]></description>
			<content:encoded><![CDATA[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: <br />
este es el js: <br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>&#36;(document).ready(function () {<br />
  &#36;('#Solicitudes').DataTable({<br />
      language: {<br />
          url: 'https://cdn.datatables.net/plug-ins/2.0.5/i18n/es-ES.json'<br />
      }<br />
  });<br />
});<br />
&#36;(document).ready(function() {<br />
  &#36;('.obtener-solicitud').click(function() {<br />
    var id_solicitud = &#36;(this).data('id');<br />
    // Petición AJAX para obtener datos generales de la solicitud<br />
    &#36;.ajax({<br />
      url: '/obtener_solicitud_json/' + id_solicitud,<br />
      type: 'GET',<br />
      success: function(data) {<br />
        &#36;('#folio').val(data.folio);<br />
        &#36;('#nombre_empresa').val(data.nombre_empresa);<br />
        &#36;('#area_empresa').val(data.area_empresa);<br />
        &#36;('#telefono_contacto').val(data.telefono_contacto);<br />
        &#36;('#correo_electronico').val(data.correo_electronico);<br />
        // Mostrar modal de solicitud<br />
        &#36;('#ModalSolicitud').modal('show');<br />
        // Llamar a función para obtener todos los datos relacionados con la solicitud<br />
        obtenerDatosRelacionados(id_solicitud);<br />
      },<br />
      error: function(xhr, status, error) {<br />
        console.error(xhr.responseText);<br />
      }<br />
    });<br />
  });<br />
  // Función para obtener todos los datos relacionados con la solicitud<br />
  function obtenerDatosRelacionados(id_solicitud) {<br />
    // Petición AJAX para obtener datos de inspección<br />
    &#36;.ajax({<br />
      url: '/obtener_inspeccion_json/' + id_solicitud,<br />
      type: 'GET',<br />
      success: function(data) {<br />
        &#36;('#p_inspeccion_select').val(data.p_inspeccion_select);<br />
        &#36;('#hyf_acceso').val(data.hyf_acceso);<br />
      },<br />
      error: function(xhr, status, error) {<br />
        console.error(xhr.responseText);<br />
      }<br />
    });<br />
    // Petición AJAX para obtener datos de actividades<br />
    &#36;.ajax({<br />
      url: '/obtener_actividad_json/' + desc_act,<br />
      type: 'GET',<br />
      success: function(data) {<br />
        &#36;('#desc_act').val(data.desc_act);<br />
        &#36;('#lug_act').val(data.lug_act);<br />
      },<br />
      error: function(xhr, status, error) {<br />
        console.error(xhr.responseText);<br />
      }<br />
    });<br />
    // Petición AJAX para obtener datos de personas que ingresan<br />
    &#36;.ajax({<br />
      url: '/obtener_personas_json/' + nombre,<br />
      type: 'GET',<br />
      success: function(data) {<br />
        &#36;('#nombre').val(data.nombre);<br />
        &#36;('#iden').val(data.identificacion);<br />
      },<br />
      error: function(xhr, status, error) {<br />
        console.error(xhr.responseText);<br />
      }<br />
    });<br />
    // Petición AJAX para obtener datos de vehículos<br />
    &#36;.ajax({<br />
      url: '/obtener_vehiculo_json/' + vehiculo,<br />
      type: 'GET',<br />
      success: function(data) {<br />
        &#36;('#vehiculo').val(data.vehiculo);<br />
        &#36;('#marca').val(data.marca);<br />
        &#36;('#modelo').val(data.modelo);<br />
        &#36;('#color').val(data.color);<br />
        &#36;('#año').val(data.año);<br />
        &#36;('#matricula').val(data.matricula);<br />
        &#36;('#balizado').val(data.balizado);<br />
        <br />
        // Manejo de campo tiav como imagen, archivo pdf, etc.<br />
        if (data.tiav) {<br />
          &#36;('#imagenTiav').attr('src', 'data:image/png;base64,' + data.tiav); // Suponiendo que es una imagen o un pdf<br />
        }<br />
      },<br />
      error: function(xhr, status, error) {<br />
        console.error(xhr.responseText);<br />
      }<br />
    });<br />
    // Petición AJAX para obtener datos de artículos<br />
    &#36;.ajax({<br />
      url: '/obtener_articulo_json/' + cantidad, <br />
      type: 'GET',<br />
      success: function(data) {<br />
        &#36;('#cantidad').val(data.cantidad);<br />
        &#36;('#nom_art').val(data.nom_art);<br />
        &#36;('#desc_art').val(data.desc_art);<br />
      },<br />
      error: function(xhr, status, error) {<br />
        console.error(xhr.responseText);<br />
      }<br />
    });<br />
  }<br />
}); </code></div></div><br />
este es el python: <br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>solicitud = Blueprint('solicitud', __name__)<br />
<br />
@solicitud.route("/obtener_solicitud_json/&lt;int:id_solicitud&gt;", methods=['GET'])<br />
def obtener_solicitud_json(id_solicitud):<br />
    cursor = mysql.connection.cursor()<br />
    cursor.execute("SELECT * FROM folios WHERE id_solicitud = %s", (id_solicitud,))<br />
    solicitud = cursor.fetchone()<br />
    cursor.close()<br />
    if solicitud:<br />
        resultado = {<br />
            'id_solicitud': solicitud[0],<br />
            'folio': solicitud[1],<br />
            'nombre_empresa': solicitud[3],<br />
            'area_empresa': solicitud[4],<br />
            'telefono_contacto': solicitud[5],<br />
            'correo_electronico': solicitud[6]<br />
        }<br />
        return jsonify(resultado)<br />
    else:<br />
        return jsonify({'error': 'Solicitud no encontrada'}), 404<br />
    <br />
# Consulta 2:  p_inspeccion por p_inspecion_select<br />
@solicitud.route("/obtener_inspeccion_json/&lt;p_inspecion_select&gt;", methods=['GET'])<br />
def obtener_inspeccion_json(p_inspecion_select):<br />
    cursor = mysql.connection.cursor()<br />
    cursor.execute("SELECT * FROM p_inspeccion WHERE p_inspecion_select = %s", (p_inspecion_select,))<br />
    solicitud = cursor.fetchone()<br />
    cursor.close()<br />
    if solicitud:<br />
        resultado = {<br />
            'p_inspecion_select': solicitud[0],<br />
            'hyf_acceso': solicitud[2]<br />
        }<br />
        return jsonify(resultado)<br />
    else:<br />
        return jsonify({'error': 'Inspección no encontrada'}), 404<br />
    <br />
# Consulta 3: Actividades <br />
@solicitud.route("/obtener_actividad_json/&lt;desc_act&gt;", methods=['GET'])<br />
def obtener_actividad_json(desc_act):<br />
    cursor = mysql.connection.cursor()<br />
    cursor.execute("SELECT * FROM actividades WHERE desc_act = %s", (desc_act,))<br />
    solicitud = cursor.fetchone()<br />
    cursor.close()<br />
    if solicitud:<br />
        resultado = {<br />
            'desc_act': solicitud[0],<br />
            'lug_act': solicitud[1]<br />
        }<br />
        return jsonify(resultado)<br />
    else:<br />
        return jsonify({'error': 'Actividad no encontrada'}), 404<br />
# Consulta 4: Personas que ingresan por nombre<br />
@solicitud.route("/obtener_personas_json/&lt;nombre&gt;", methods=['GET'])<br />
def obtener_personas_json(nombre):<br />
    cursor = mysql.connection.cursor()<br />
    cursor.execute("SELECT * FROM personas_ingresan WHERE nombre = %s", (nombre,))<br />
    solicitud = cursor.fetchone()<br />
    cursor.close()<br />
    if solicitud:<br />
        resultado = {<br />
            'nombre': solicitud[0],<br />
            'identificacion': solicitud[1],<br />
        }<br />
        return jsonify(resultado)<br />
    else:<br />
        return jsonify({'error': 'Persona no encontrada'}), 404<br />
# Consulta 5: Vehículos <br />
@solicitud.route("/obtener_vehiculo_json/&lt;vehiculo&gt;", methods=['GET'])<br />
def obtener_vehiculo_json(vehiculo):<br />
    cursor = mysql.connection.cursor()<br />
    cursor.execute("SELECT * FROM vehiculos WHERE vehiculo = %s", (vehiculo,))<br />
    solicitud = cursor.fetchone()<br />
    cursor.close()<br />
    if solicitud:<br />
        resultado = {<br />
            'vehiculo': solicitud[0],<br />
            'marca': solicitud[1],<br />
            'modelo': solicitud[2],<br />
            'color': solicitud[3],<br />
            'año': solicitud[4],<br />
            'matricula': solicitud[5],<br />
            'balizado': solicitud[6],<br />
            'tiav': solicitud[7],<br />
        }<br />
        return jsonify(resultado)<br />
    else:<br />
        return jsonify({'error': 'Vehículo no encontrado'}), 404<br />
# Consulta 6: Artículos<br />
@solicitud.route("/obtener_articulo_json/&lt;int:cantidad&gt;", methods=['GET'])<br />
def obtener_articulo_json(cantidad):<br />
    cursor = mysql.connection.cursor()<br />
    cursor.execute("SELECT * FROM listado_articulos WHERE cantidad = %s", (cantidad,))<br />
    solicitud = cursor.fetchone()<br />
    cursor.close()<br />
    if solicitud:<br />
        resultado = {<br />
            'cantidad': solicitud[0],<br />
            'nom_art': solicitud[1],<br />
            'desc_art': solicitud[2]<br />
        }<br />
        return jsonify(resultado)<br />
    else:<br />
        return jsonify({'error': 'Artículo no encontrado'}), 404</code></div></div><br />
y por ultimo aqui es en donde quiero que se muestren los datos pero unicamente me salen los valores de la empresa:<br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code> &lt;div class="modal fade" id="ModalSolicitud" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"&gt;<br />
        &lt;div class="modal-dialog modal-xl modal-dialog-scrollable"&gt;<br />
            &lt;div class="modal-content"&gt;<br />
                &lt;div class="modal-header"&gt;<br />
                    &lt;h1 class="modal-title fs-5" id="exampleModalLabel"&gt;Solicitud de Ingreso&lt;/h1&gt;<br />
                    &lt;button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"&gt;&lt;/button&gt;<br />
                &lt;/div&gt;<br />
                &lt;div class="modal-body"&gt;<br />
                    &lt;div class="mb-3 row"&gt; <br />
                        &lt;label for="staticEmail" class="col-sm-2 col-form-label"&gt;Folio&lt;/label&gt;<br />
                        &lt;div class="col-sm-10"&gt;<br />
                            &lt;input type="text" readonly class="form-control-plaintext" id="folio"&gt;<br />
                        &lt;/div&gt;<br />
                    &lt;/div&gt;<br />
                    &lt;div class="accordion" id="accordionExample"&gt;<br />
                        &lt;!-- Datos de la empresa --&gt;<br />
                        &lt;div class="accordion-item "&gt;<br />
                            &lt;h2 class="accordion-header" id="headingOne"&gt;<br />
                                &lt;button class="accordion-button " type="button" data-bs-toggle="collapse"<br />
                                    data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne"&gt;<br />
                                    Datos de la empresa<br />
                                &lt;/button&gt;<br />
                            &lt;/h2&gt;<br />
                            &lt;div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne"<br />
                                data-bs-parent="#accordionExample"&gt;<br />
                                &lt;div class="accordion-body"&gt;<br />
                                    &lt;div class="row g-3"&gt;<br />
                                        &lt;div class="col-md-6"&gt;<br />
                                            &lt;label for="empresa" class="form-label"&gt;Nombre de la empresa&lt;/label&gt;<br />
                                            &lt;input type="text" class="form-control" id="nombre_empresa" disabled&gt;<br />
                                        &lt;/div&gt;<br />
                                        &lt;div class="col-md-6"&gt;<br />
                                            &lt;label for="area" class="form-label"&gt;Área&lt;/label&gt;<br />
                                            &lt;input type="text" class="form-control" id="area_empresa" disabled&gt;<br />
                                        &lt;/div&gt;<br />
                                    &lt;/div&gt;<br />
                                &lt;/div&gt;<br />
                            &lt;/div&gt;<br />
                        &lt;/div&gt;<br />
                        &lt;!-- Datos de contacto --&gt;<br />
                        &lt;div class="accordion-item"&gt;<br />
                            &lt;h2 class="accordion-header" id="headingTwo"&gt;<br />
                                &lt;button class="accordion-button" type="button" data-bs-toggle="collapse"<br />
                                    data-bs-target="#collapseTwo" aria-expanded="true" aria-controls="collapseTwo"&gt;<br />
                                    Datos de contacto<br />
                                &lt;/button&gt;<br />
                            &lt;/h2&gt;<br />
                            &lt;div id="collapseTwo" class="accordion-collapse collapse show" aria-labelledby="headingTwo"<br />
                                data-bs-parent="#accordionExample"&gt;<br />
                                &lt;div class="accordion-body"&gt;<br />
                                    &lt;div class="row g-3"&gt;<br />
                                        &lt;div class="col-md-6"&gt;<br />
                                            &lt;label for="telefono" class="form-label"&gt;Teléfono&lt;/label&gt;<br />
                                            &lt;input type="tel" class="form-control" id="telefono_contacto" disabled&gt;<br />
                                        &lt;/div&gt;<br />
                                        &lt;div class="col-md-6"&gt;<br />
                                            &lt;label for="correo_electronico" class="form-label"&gt;Correo<br />
                                                Electrónico&lt;/label&gt;<br />
                                            &lt;input type="email" class="form-control" id="correo_electronico"<br />
                                                name="correo_electronico" disabled&gt;<br />
                                        &lt;/div&gt;<br />
                                    &lt;/div&gt;<br />
                                &lt;/div&gt;<br />
                            &lt;/div&gt;<br />
                        &lt;/div&gt;<br />
                    &lt;!-- Punto de inspección --&gt;<br />
                    &lt;div class="accordion-item"&gt;<br />
                        &lt;h2 class="accordion-header" id="headingFour"&gt;<br />
                            &lt;button class="accordion-button" type="button" data-bs-toggle="collapse"<br />
                                data-bs-target="#collapseFour" aria-expanded="true" aria-controls="collapseFour"&gt;<br />
                                Punto de inspección<br />
                            &lt;/button&gt;<br />
                        &lt;/h2&gt;<br />
                        &lt;div id="collapseFour" class="accordion-collapse collapse show" aria-labelledby="headingFour"<br />
                            data-bs-parent="#accordionExample"&gt;<br />
                            &lt;div class="accordion-body"&gt;<br />
                                &lt;div class="row g-3"&gt;<br />
                                    &lt;div class="col-md-6"&gt;<br />
                                        &lt;label for="p_inspecion_select" class="form-label"&gt;Puntos de inspección a cruzar&lt;/label&gt;<br />
                                        &lt;input type="text" class="form-control" id="p_inspecion_select"  disabled&gt;<br />
                                    &lt;/div&gt;<br />
                                &lt;/div&gt;<br />
                            &lt;/div&gt;<br />
                        &lt;/div&gt;<br />
                    &lt;/div&gt;<br />
                    &lt;!-- Datos del responsable --&gt;<br />
                    &lt;div class="accordion-item"&gt;<br />
                        &lt;h2 class="accordion-header" id="headingFive"&gt;<br />
                            &lt;button class="accordion-button" type="button" data-bs-toggle="collapse"<br />
                                data-bs-target="#collapseFive" aria-expanded="true" aria-controls="collapseFive"&gt;<br />
                                Fecha y hora de acceso a los puntos de inspeccion<br />
                            &lt;/button&gt;<br />
                        &lt;/h2&gt;<br />
                        &lt;div id="collapseFive" class="accordion-collapse collapse show" aria-labelledby="headingFive"<br />
                            data-bs-parent="#accordionExample"&gt;<br />
                            &lt;div class="accordion-body"&gt;<br />
                                &lt;div class="row g-3"&gt;<br />
                                    &lt;div class="col-md-6"&gt;<br />
                                        &lt;label for="telefono" class="form-label"&gt;Fecha y hora de acceso&lt;/label&gt;<br />
                                        &lt;input type="datetime-local" class="form-control" id="hyf_acceso"  disabled&gt;<br />
                                    &lt;/div&gt;<br />
                                &lt;/div&gt;<br />
                            &lt;/div&gt;<br />
                        &lt;/div&gt;<br />
                    &lt;/div&gt;<br />
                    &lt;!--actividades--&gt;<br />
                    &lt;div class="accordion-item"&gt;<br />
                        &lt;h2 class="accordion-header" id="headingSix"&gt;<br />
                            &lt;button class="accordion-button" type="button" data-bs-toggle="collapse"<br />
                                data-bs-target="#collapseSix" aria-expanded="true" aria-controls="collapseSix"&gt;<br />
                                Actividades a realizar<br />
                            &lt;/button&gt;<br />
                        &lt;/h2&gt;<br />
                        &lt;div id="collapseSix" class="accordion-collapse collapse show" aria-labelledby="headingSix"<br />
                            data-bs-parent="#accordionExample"&gt;<br />
                            &lt;div class="accordion-body"&gt;<br />
                                &lt;div class="row g-3"&gt;<br />
                                    &lt;div class="col-md-6"&gt;<br />
                                        &lt;label for="Descripción" class="form-label"&gt;Descripción de actividades&lt;/label&gt;<br />
                                        &lt;input type="text" class="form-control" id="desc_act"  disabled&gt;<br />
                                    &lt;/div&gt;<br />
                                    &lt;div class="col-md-6"&gt;<br />
                                        &lt;label for="lug_act" class="form-label"&gt;Lugar de actividades&lt;/label&gt;<br />
                                        &lt;input type="text" class="form-control" id="lug_act" disabled&gt;<br />
                                    &lt;/div&gt;<br />
                                &lt;/div&gt;<br />
                            &lt;/div&gt;<br />
                        &lt;/div&gt;<br />
                    &lt;/div&gt;<br />
                        &lt;!-- Datos de identificación --&gt;<br />
                        &lt;div class="accordion-item"&gt;<br />
                            &lt;h2 class="accordion-header" id="headingThree"&gt;<br />
                                &lt;button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseThree"<br />
                                    aria-expanded="true" aria-controls="collapseThree"&gt;<br />
                                    Datos de identificación<br />
                                &lt;/button&gt;<br />
                            &lt;/h2&gt;<br />
                            &lt;div id="collapseThree" class="accordion-collapse collapse show" aria-labelledby="headingThree"<br />
                                data-bs-parent="#accordionExample"&gt;<br />
                                &lt;div class="accordion-body"&gt;<br />
                                    &lt;table class="table table-striped table-bordered"&gt;<br />
                                        &lt;thead class="table-dark"&gt;<br />
                                            &lt;tr&gt;<br />
                                                &lt;th class="fw-bold"&gt;Nombre completo&lt;/th&gt;<br />
                                                &lt;th&gt;Tipo de identificación&lt;/th&gt;<br />
                                            &lt;/tr&gt;<br />
                                        &lt;/thead&gt;<br />
                                        &lt;tbody&gt;<br />
                                            &lt;tr&gt;<br />
                                                &lt;td&gt;&lt;input type="text" class="form-control" id="nombre"  disabled&gt;&lt;/td&gt;<br />
                                                &lt;td&gt;&lt;input type="text" class="form-control" id="iden" disabled&gt;&lt;/td&gt;<br />
                                            &lt;/tr&gt;<br />
                                        &lt;/tbody&gt;<br />
                                    &lt;/table&gt;<br />
                                &lt;/div&gt;<br />
                            &lt;/div&gt;<br />
                        &lt;/div&gt;<br />
                    &lt;!-- Datos del Vehiculo --&gt;<br />
                    &lt;div class="accordion-item"&gt;<br />
                        &lt;h2 class="accordion-header" id="headingSeven"&gt;<br />
                            &lt;button class="accordion-button" type="button" data-bs-toggle="collapse"<br />
                                data-bs-target="#collapseSeven" aria-expanded="true" aria-controls="collapseSeven"&gt;<br />
                                Vehiculos<br />
                            &lt;/button&gt;<br />
                        &lt;/h2&gt;<br />
                        &lt;div id="collapseSeven" class="accordion-collapse collapse show" aria-labelledby="headingSeven" data-bs-parent="#accordionExample"&gt;<br />
    &lt;div class="row"&gt;<br />
        &lt;div class="col-md-6"&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Se accederá un vehículo&lt;/label&gt;<br />
                &lt;input type="text" class="form-control" id="vehiculo"  disabled&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Marca&lt;/label&gt;<br />
                &lt;input type="text" class="form-control" id="marca"  disabled&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Modelo&lt;/label&gt;<br />
                &lt;input type="text" class="form-control" id="modelo"  disabled&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Color&lt;/label&gt;<br />
                &lt;input type="text" class="form-control" id="color"  disabled&gt;<br />
            &lt;/div&gt;<br />
        &lt;/div&gt;<br />
        &lt;div class="col-md-6"&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Año&lt;/label&gt;<br />
                &lt;input type="text" class="form-control" id="año"  disabled&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Matricula&lt;/label&gt;<br />
                &lt;input type="text" class="form-control" id="matricula"  disabled&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Cuenta con balizado&lt;/label&gt;<br />
                &lt;input type="text" class="form-control" id="balizado"  disabled&gt;<br />
            &lt;/div&gt;<br />
            &lt;div class="mb-3"&gt;<br />
                &lt;label class="form-label"&gt;Tiav&lt;/label&gt;<br />
                &lt;a href="#" data-bs-toggle="offcanvas" data-bs-target="#offcanvasRight" aria-controls="offcanvasRight"&gt;Ver&lt;/a&gt;<br />
                &lt;!-- Offcanvas --&gt;<br />
                &lt;div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasRight" aria-labelledby="offcanvasRightLabel"&gt;<br />
                    &lt;div class="offcanvas-header"&gt;<br />
                        &lt;h5 class="offcanvas-title" id="offcanvasRightLabel"&gt;Tiav&lt;/h5&gt;<br />
                        &lt;button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"&gt;&lt;/button&gt;<br />
                    &lt;/div&gt;<br />
                    &lt;div class="offcanvas-body"&gt;<br />
                        &lt;!-- Aquí se va a mostrar la imagen de la tiav --&gt;<br />
                        &lt;img id="imagenTiav" class="img-fluid"&gt;<br />
                    &lt;/div&gt;<br />
                &lt;/div&gt;<br />
            &lt;/div&gt;<br />
        &lt;/div&gt;<br />
    &lt;/div&gt;<br />
&lt;/div&gt;<br />
                    &lt;/div&gt; <br />
                    &lt;!--articulos--&gt;<br />
                        &lt;div class="accordion-item"&gt;<br />
                            &lt;h2 class="accordion-header" id="headingEight"&gt;<br />
                                &lt;button class="accordion-button" type="button" data-bs-toggle="collapse"<br />
                                    data-bs-target="#collapseEight" aria-expanded="true" aria-controls="collapseEight"&gt;<br />
                                    Artículo<br />
                                &lt;/button&gt;<br />
                            &lt;/h2&gt;<br />
                            &lt;div id="collapseEight" class="accordion-collapse collapse show" aria-labelledby="headingEight"<br />
                            data-bs-parent="#accordionExample"&gt;<br />
                            &lt;div class="accordion-body"&gt;<br />
                                &lt;table class="table table-striped table-bordered"&gt;<br />
                                    &lt;thead class="table-dark"&gt;<br />
                                        &lt;tr&gt;<br />
                                            &lt;th class="fw-bold"&gt;Cantidad&lt;/th&gt;<br />
                                            &lt;th&gt;Nombre del artículo&lt;/th&gt;<br />
                                            &lt;th class="text-center"&gt;Descripción del artículo&lt;/th&gt;<br />
                                        &lt;/tr&gt;<br />
                                    &lt;/thead&gt;<br />
                                    &lt;tbody&gt;<br />
                                        &lt;tr&gt;<br />
                                            &lt;td class="text-center"&gt;&lt;input type="number" class="form-control" id="cantidad" disabled&gt;<br />
                                            &lt;/td&gt;<br />
                                            &lt;td class="text-center"&gt;&lt;input type="text" class="form-control" id="nom_art"  disabled&gt;<br />
                                            &lt;/td&gt;<br />
                                            &lt;td class="text-center"&gt;&lt;input type="text" class="form-control" id="desc_art" disabled&gt;<br />
                                            &lt;/td&gt;<br />
                                        &lt;/tr&gt;<br />
                                    &lt;/tbody&gt;<br />
                                &lt;/table&gt;<br />
                            &lt;/div&gt;<br />
                        &lt;/div&gt;<br />
                        &lt;/div&gt;                    <br />
                &lt;/div&gt;</code></div></div><br />
si me pueden ayudar a mostrar datos se los agradeceria mucho]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Modulo datetime]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1473</link>
			<pubDate>Mon, 13 May 2024 13:26:55 -0700</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1557">Patriota39009</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1473</guid>
			<description><![CDATA[Hola, soy nuevo en la programación, y estoy intentando entender como funcionan las fechas y horas en python, tengo esta situación:<br />
quiero crear una agenda de citas, lo estoy haciendo en django, donde tengo mis modelos, de profesional, servicio (que brinda ese profesional), y como tal el objeto de reserva,<br />
lo que quiero hacer o lo que tengo duda, es:<br />
Ya tengo configurado horario de entrada y salida de un profesional digamos (7 am - 6 pm)<br />
ahora cada servicio tiene un intervalo de tiempo, digamos "servicio1" es de 20 min.<br />
como puedo ocupar con el objeto reserva, ese tiempo en la agenda del "profesional". <br />
en realidad no entiendo como puedo ocupar espacios de tiempo, dentro de un objeto, para que yo pueda gestionar sus citas.<br />
<br />
Les agradezco de antemano, y si alguen le sirve cuando termine puedo conpartirles mis repositorio de git, para que vean como quedo.<br />
muchas gracias.]]></description>
			<content:encoded><![CDATA[Hola, soy nuevo en la programación, y estoy intentando entender como funcionan las fechas y horas en python, tengo esta situación:<br />
quiero crear una agenda de citas, lo estoy haciendo en django, donde tengo mis modelos, de profesional, servicio (que brinda ese profesional), y como tal el objeto de reserva,<br />
lo que quiero hacer o lo que tengo duda, es:<br />
Ya tengo configurado horario de entrada y salida de un profesional digamos (7 am - 6 pm)<br />
ahora cada servicio tiene un intervalo de tiempo, digamos "servicio1" es de 20 min.<br />
como puedo ocupar con el objeto reserva, ese tiempo en la agenda del "profesional". <br />
en realidad no entiendo como puedo ocupar espacios de tiempo, dentro de un objeto, para que yo pueda gestionar sus citas.<br />
<br />
Les agradezco de antemano, y si alguen le sirve cuando termine puedo conpartirles mis repositorio de git, para que vean como quedo.<br />
muchas gracias.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA["Requests" falla en vps]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1467</link>
			<pubDate>Tue, 30 Apr 2024 12:01:17 -0700</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1552">zodiaclogic</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1467</guid>
			<description><![CDATA[Buenas, tengo un script que ejecuto sin problemas en local, pero cuando lo cargo al servidor se rompe.<br />
En realidad funciona bien, salvo si coloco url:puerto/index...<br />
<br />
<img src="https://i.ibb.co/NtpMfsY/get-response-code-py3.png" loading="lazy"  alt="[Imagen: get-response-code-py3.png]" class="mycode_img" /><br />
<br />
si omito el puerto corre completo, obtengo respuesta, aunque sin resultados porque la url es otra, pero si lo incluyo y ejecuto en el servidor salen errores, no asi en forma local.<br />
<br />
puedo correr otros scritp similares o bien el mismo con otras url y responde ok, el problema es cuando se coloca por ejemplo <a href="https://web:8443/index" target="_blank" rel="noopener" class="mycode_url">https://web:8443/index</a>...<br />
<br />
<img src="https://i.ibb.co/Ytr0mPM/err.png" loading="lazy"  alt="[Imagen: err.png]" class="mycode_img" /><br />
<br />
alguna sugerencia, ya actualice todos los paquetes y de hecho las librerias funcionan bien.<br />
Gracias]]></description>
			<content:encoded><![CDATA[Buenas, tengo un script que ejecuto sin problemas en local, pero cuando lo cargo al servidor se rompe.<br />
En realidad funciona bien, salvo si coloco url:puerto/index...<br />
<br />
<img src="https://i.ibb.co/NtpMfsY/get-response-code-py3.png" loading="lazy"  alt="[Imagen: get-response-code-py3.png]" class="mycode_img" /><br />
<br />
si omito el puerto corre completo, obtengo respuesta, aunque sin resultados porque la url es otra, pero si lo incluyo y ejecuto en el servidor salen errores, no asi en forma local.<br />
<br />
puedo correr otros scritp similares o bien el mismo con otras url y responde ok, el problema es cuando se coloca por ejemplo <a href="https://web:8443/index" target="_blank" rel="noopener" class="mycode_url">https://web:8443/index</a>...<br />
<br />
<img src="https://i.ibb.co/Ytr0mPM/err.png" loading="lazy"  alt="[Imagen: err.png]" class="mycode_img" /><br />
<br />
alguna sugerencia, ya actualice todos los paquetes y de hecho las librerias funcionan bien.<br />
Gracias]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[funcion sifecha(DATEDIF)]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1437</link>
			<pubDate>Wed, 31 Jan 2024 04:09:23 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1515">Lugoedan</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1437</guid>
			<description><![CDATA[Buenos días, soy nuevo y ando buscando con enviar una formula desde Django a Excel la funcion es DATEDIF(SIfecha).<br />
No se como agregarla me da error.<br />
<br />
Gracias de Antemano.<br />
<br />
Elugo]]></description>
			<content:encoded><![CDATA[Buenos días, soy nuevo y ando buscando con enviar una formula desde Django a Excel la funcion es DATEDIF(SIfecha).<br />
No se como agregarla me da error.<br />
<br />
Gracias de Antemano.<br />
<br />
Elugo]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Problema al validar contraseña en Flask]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1430</link>
			<pubDate>Fri, 05 Jan 2024 03:55:23 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1500">JFalco</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1430</guid>
			<description><![CDATA[<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">app.route('/admo_login', methods=['POST'])<br />
def admin_login_post():<br />
    <br />
    _usuario = request.form['txtUsuario']<br />
    _password = request.form['txtPassword']<br />
    cur.execute("SELECT * FROM usuarios WHERE usuario='"+_usuario+"' and password='"+_password+"'")<br />
    #datos = cur.fetchall() <br />
    datos = cur.fetchone()<br />
    miConexion.commit()<br />
      if datos != "none":<br />
        print(datos)   <br />
    else:<br />
        print("No hay nada") <br />
    return render_template('admo/admin.html')</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Cuando introduzco una clave que concuerda con usuarios de la DB me devuelve el string de "datos" correctamente.</span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Pero cuando pongo una incorrecta me devuelve "none" cuando no debería devolver "no hay nada" por la igualdad del if y su else.</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Gracias por la ayuda</span></span>]]></description>
			<content:encoded><![CDATA[<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">app.route('/admo_login', methods=['POST'])<br />
def admin_login_post():<br />
    <br />
    _usuario = request.form['txtUsuario']<br />
    _password = request.form['txtPassword']<br />
    cur.execute("SELECT * FROM usuarios WHERE usuario='"+_usuario+"' and password='"+_password+"'")<br />
    #datos = cur.fetchall() <br />
    datos = cur.fetchone()<br />
    miConexion.commit()<br />
      if datos != "none":<br />
        print(datos)   <br />
    else:<br />
        print("No hay nada") <br />
    return render_template('admo/admin.html')</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Cuando introduzco una clave que concuerda con usuarios de la DB me devuelve el string de "datos" correctamente.</span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Pero cuando pongo una incorrecta me devuelve "none" cuando no debería devolver "no hay nada" por la igualdad del if y su else.</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Gracias por la ayuda</span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Problema con las rutas de los templates en Flask]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1429</link>
			<pubDate>Tue, 02 Jan 2024 11:55:42 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1500">JFalco</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1429</guid>
			<description><![CDATA[Me rindo:<br />
<br />
            Parece ser que ya tengo bastante controlado el tema(más o menos todos los lenguajes funcionan parecido) pero vuelvo a atascar en lo mismo.<br />
<br />
Me he puesto a probar cargar páginas desde otro directorio; solo puedo acceder a los HTML que tengo directamente guardados en "templates"  He utilizado la combinatoria y ni con eso. Esta es la gran pregunta:<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">ARBOL</span></span><br />
<br />
&gt;PRUEBA_WEB<br />
        &gt;TEMPLATES <br />
                   -index.html<br />
                   &gt;ADMO<br />
                          -login.html<br />
<br />
rutas: <br />
           templates/index.html<br />
           templates/admo/login.html<br />
<br />
<br />
<br />
<br />
<span style="font-style: italic;" class="mycode_i"><span style="color: #00369b;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">@app.route('/')<br />
def inicio():<br />
    return render_template('index.html') </span></span></span><br />
<br />
<span style="font-style: italic;" class="mycode_i"><span style="color: #00369b;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">@app.route('/admin')<br />
def admin():<br />
   return render_template('admin.html')   (dentro de templates) FUNCIONA</span></span></span><br />
<br />
<br />
<span style="font-style: italic;" class="mycode_i"><span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">@app.route('/????????')                         (dentro de la carpeta "admo" html de prueba "login.html") NO FUNCIONA<br />
def admin_login():<br />
  <br />
    return render_template('admo/login.html??????????')</span></span></span><br />
<br />
<span style="font-style: italic;" class="mycode_i"><span style="color: #00369b;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">@app.route('/home')                       (dentro de templates) FUNCIONA<br />
def home():<br />
    return render_template('index.html')<br />
if __name__=='__main__':<br />
    app.run(debug=True)</span></span></span><br />
<br />
<br />
Lamento molestaros pero no hubo forma de acceder desde: "localhost:5000/admin_login"<br />
<br />
Gracias por vuestro interés.]]></description>
			<content:encoded><![CDATA[Me rindo:<br />
<br />
            Parece ser que ya tengo bastante controlado el tema(más o menos todos los lenguajes funcionan parecido) pero vuelvo a atascar en lo mismo.<br />
<br />
Me he puesto a probar cargar páginas desde otro directorio; solo puedo acceder a los HTML que tengo directamente guardados en "templates"  He utilizado la combinatoria y ni con eso. Esta es la gran pregunta:<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">ARBOL</span></span><br />
<br />
&gt;PRUEBA_WEB<br />
        &gt;TEMPLATES <br />
                   -index.html<br />
                   &gt;ADMO<br />
                          -login.html<br />
<br />
rutas: <br />
           templates/index.html<br />
           templates/admo/login.html<br />
<br />
<br />
<br />
<br />
<span style="font-style: italic;" class="mycode_i"><span style="color: #00369b;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">@app.route('/')<br />
def inicio():<br />
    return render_template('index.html') </span></span></span><br />
<br />
<span style="font-style: italic;" class="mycode_i"><span style="color: #00369b;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">@app.route('/admin')<br />
def admin():<br />
   return render_template('admin.html')   (dentro de templates) FUNCIONA</span></span></span><br />
<br />
<br />
<span style="font-style: italic;" class="mycode_i"><span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">@app.route('/????????')                         (dentro de la carpeta "admo" html de prueba "login.html") NO FUNCIONA<br />
def admin_login():<br />
  <br />
    return render_template('admo/login.html??????????')</span></span></span><br />
<br />
<span style="font-style: italic;" class="mycode_i"><span style="color: #00369b;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">@app.route('/home')                       (dentro de templates) FUNCIONA<br />
def home():<br />
    return render_template('index.html')<br />
if __name__=='__main__':<br />
    app.run(debug=True)</span></span></span><br />
<br />
<br />
Lamento molestaros pero no hubo forma de acceder desde: "localhost:5000/admin_login"<br />
<br />
Gracias por vuestro interés.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Pregunta de JavaScript y "sessionStorage"]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1428</link>
			<pubDate>Sun, 31 Dec 2023 00:54:29 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1500">JFalco</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1428</guid>
			<description><![CDATA[<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Sigo con mis pruebas de python pero ahora me encuentro con un problema de variables de sesión.</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Quiero crear una variable y controlarla desde JavaScript de esta manera:</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Cuando carga el "body" llamo a esta función con "onload":</span></span><br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>function empezamos(){<br />
           sessionStorage.setItem("switch_boton", "1");<br />
                     <br />
        }</code></div></div><br />
<div style="text-align: left;" class="mycode_align"><span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Después con el evento "onclick" llamo a la función para cambiar el valor de la variable de sesión (como no se puede modificar, la borro y la creo con el nuevo valor):</span></span></div>
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>    function cambiar_boton_menu()<br />
    {  <br />
        <br />
        sw_boton = sessionStorage.getItem("switch_boton"); // tomo el valor de la variable<br />
       <br />
       if (sw_boton="1") //si es 1 vamos a cambiarla por 2<br />
       {<br />
             sessionStorage.removeItem("switch_boton"); //la borro<br />
             sessionStorage.setItem("switch_boton", "2"); //creo la nueva<br />
             sw_boton = sessionStorage.getItem("switch_boton"); //tomo el nuevo valor<br />
             alert(sw_boton);                                   //y compruebo<br />
       } else {                                                 //si es 2 hacemos la operación a la inversa<br />
             sessionStorage.removeItem("switch_boton");<br />
             sessionStorage.setItem("switch_boton", "1");<br />
             sw_boton = sessionStorage.getItem("switch_boton");<br />
             alert(sw_boton);<br />
        }<br />
       <br />
      }</code></div></div><br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Me planteé el ejercicio pensando que era muy simple pero no funciona: El primer cambio lo hace correctamente a "2" pero no vuelve a "1".</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">¿Habría alguna forma de combinar Python con las funciones de los Scripts?</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Llevaba más de 20 años desde que dejé el tema de HTML, JS y ASP con lo que trabajaba y entre las cosas nuevas (como lo de SessionStorage) y que se me ha olvidado todo me está costando mucho arrancar de nuevo.</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Muchas gracias por vuestra ayuda. </span></span>]]></description>
			<content:encoded><![CDATA[<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Sigo con mis pruebas de python pero ahora me encuentro con un problema de variables de sesión.</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Quiero crear una variable y controlarla desde JavaScript de esta manera:</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Cuando carga el "body" llamo a esta función con "onload":</span></span><br />
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>function empezamos(){<br />
           sessionStorage.setItem("switch_boton", "1");<br />
                     <br />
        }</code></div></div><br />
<div style="text-align: left;" class="mycode_align"><span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Después con el evento "onclick" llamo a la función para cambiar el valor de la variable de sesión (como no se puede modificar, la borro y la creo con el nuevo valor):</span></span></div>
<br />
<div class="codeblock"><div class="title">Código:</div><div class="body" dir="ltr"><code>    function cambiar_boton_menu()<br />
    {  <br />
        <br />
        sw_boton = sessionStorage.getItem("switch_boton"); // tomo el valor de la variable<br />
       <br />
       if (sw_boton="1") //si es 1 vamos a cambiarla por 2<br />
       {<br />
             sessionStorage.removeItem("switch_boton"); //la borro<br />
             sessionStorage.setItem("switch_boton", "2"); //creo la nueva<br />
             sw_boton = sessionStorage.getItem("switch_boton"); //tomo el nuevo valor<br />
             alert(sw_boton);                                   //y compruebo<br />
       } else {                                                 //si es 2 hacemos la operación a la inversa<br />
             sessionStorage.removeItem("switch_boton");<br />
             sessionStorage.setItem("switch_boton", "1");<br />
             sw_boton = sessionStorage.getItem("switch_boton");<br />
             alert(sw_boton);<br />
        }<br />
       <br />
      }</code></div></div><br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Me planteé el ejercicio pensando que era muy simple pero no funciona: El primer cambio lo hace correctamente a "2" pero no vuelve a "1".</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">¿Habría alguna forma de combinar Python con las funciones de los Scripts?</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Llevaba más de 20 años desde que dejé el tema de HTML, JS y ASP con lo que trabajaba y entre las cosas nuevas (como lo de SessionStorage) y que se me ha olvidado todo me está costando mucho arrancar de nuevo.</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Muchas gracias por vuestra ayuda. </span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Cómo servir imágenes en Flask]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1427</link>
			<pubDate>Wed, 27 Dec 2023 14:21:34 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1500">JFalco</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1427</guid>
			<description><![CDATA[Parecía que todo iba bien pero hemos topado con lo más tonto.<br />
<br />
arbol de carpetas<br />
<br />
app_prueba<br />
<br />
      templates<br />
<br />
          css<br />
<br />
          imagenes<br />
                portada_1.jpg<br />
                portada.jpg<br />
          index.html<br />
               <span style="font-style: italic;" class="mycode_i">&lt;img src="/imagenes/portada_1.jpg" alt="imagen de portada" width:"800"&gt;</span>. Lo más tonto del mundo. HTML simple.<br />
<br />
 index.py<br />
  <br />
           <span style="font-style: italic;" class="mycode_i"><span style="color: #cccccc;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><span style="color: #c586c0;" class="mycode_color">from</span> <span style="color: #4ec9b0;" class="mycode_color">flask</span> <span style="color: #c586c0;" class="mycode_color">import</span> <span style="color: #4ec9b0;" class="mycode_color">Flask</span>, <span style="color: #dcdcaa;" class="mycode_color">render_template</span>, <span style="color: #9cdcfe;" class="mycode_color">request</span>, <span style="color: #dcdcaa;" class="mycode_color">redirect</span><br />
<span style="color: #c586c0;" class="mycode_color">from</span> <span style="color: #4ec9b0;" class="mycode_color">datetime</span> <span style="color: #c586c0;" class="mycode_color">import</span> <span style="color: #4ec9b0;" class="mycode_color">datetime</span><br />
<span style="color: #c586c0;" class="mycode_color">from</span> <span style="color: #4ec9b0;" class="mycode_color">flask</span> <span style="color: #c586c0;" class="mycode_color">import</span> <span style="color: #dcdcaa;" class="mycode_color">send_from_directory</span><br />
<span style="color: #c586c0;" class="mycode_color">import</span> <span style="color: #4ec9b0;" class="mycode_color">os</span><br />
<span style="color: #9cdcfe;" class="mycode_color">app</span> <span style="color: #d4d4d4;" class="mycode_color">=</span> <span style="color: #4ec9b0;" class="mycode_color">Flask</span>(<span style="color: #9cdcfe;" class="mycode_color">__name__</span>)<br />
<span style="color: #dcdcaa;" class="mycode_color">@</span><span style="color: #9cdcfe;" class="mycode_color">app</span><span style="color: #dcdcaa;" class="mycode_color">.route</span>(<span style="color: #ce9178;" class="mycode_color">"/"</span>)<br />
<span style="color: #569cd6;" class="mycode_color">def</span> <span style="color: #dcdcaa;" class="mycode_color">inicio</span>():<br />
    <span style="color: #c586c0;" class="mycode_color">return</span> <span style="color: #dcdcaa;" class="mycode_color">render_template</span>(<span style="color: #ce9178;" class="mycode_color">"index.html"</span>)<br />
<span style="color: #c586c0;" class="mycode_color">if</span> <span style="color: #9cdcfe;" class="mycode_color">__name__</span> <span style="color: #d4d4d4;" class="mycode_color">==</span> <span style="color: #ce9178;" class="mycode_color">"__main__"</span>:<br />
    <span style="color: #9cdcfe;" class="mycode_color">app</span>.<span style="color: #dcdcaa;" class="mycode_color">run</span>(<span style="color: #9cdcfe;" class="mycode_color">debug</span><span style="color: #d4d4d4;" class="mycode_color">=</span><span style="color: #569cd6;" class="mycode_color">True</span>)</span></span></span><br />
<br />
      <span style="color: #000000;" class="mycode_color">He probado de todas las formas los directorios y no ha funcionado de ninguna de las maneras. El ejemplo que he dejado es aleatorio.</span><br />
<br />
<span style="color: #000000;" class="mycode_color">      La máquina ve va autocompletando en la dirección correcta. He probado incluso desde a raíz o metiendo "../". Vamos toda la combinatoria posible.</span><br />
<br />
<span style="color: #000000;" class="mycode_color">      Por lo tanto no es la ruta de carga. He puesto otra imagen y cambiado en nombre (por si acaso), y tampoco.</span><br />
<span style="color: #000000;" class="mycode_color">      Finalmente he probado desde Windows abriendo en fichero directamente pulsando el "index.html" y me ha cargado la imagen con las siguientes rutas:</span><br />
<br />
<span style="color: #000000;" class="mycode_color">              ../templates/imagenes/portada_1.jpg</span><br />
<span style="color: #000000;" class="mycode_color">y en</span><br />
<span style="color: #000000;" class="mycode_color"> </span><br />
<span style="color: #000000;" class="mycode_color">              imagenes/portada_1.jpg</span><br />
<br />
<span style="color: #000000;" class="mycode_color">Para volverse loco.</span>]]></description>
			<content:encoded><![CDATA[Parecía que todo iba bien pero hemos topado con lo más tonto.<br />
<br />
arbol de carpetas<br />
<br />
app_prueba<br />
<br />
      templates<br />
<br />
          css<br />
<br />
          imagenes<br />
                portada_1.jpg<br />
                portada.jpg<br />
          index.html<br />
               <span style="font-style: italic;" class="mycode_i">&lt;img src="/imagenes/portada_1.jpg" alt="imagen de portada" width:"800"&gt;</span>. Lo más tonto del mundo. HTML simple.<br />
<br />
 index.py<br />
  <br />
           <span style="font-style: italic;" class="mycode_i"><span style="color: #cccccc;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><span style="color: #c586c0;" class="mycode_color">from</span> <span style="color: #4ec9b0;" class="mycode_color">flask</span> <span style="color: #c586c0;" class="mycode_color">import</span> <span style="color: #4ec9b0;" class="mycode_color">Flask</span>, <span style="color: #dcdcaa;" class="mycode_color">render_template</span>, <span style="color: #9cdcfe;" class="mycode_color">request</span>, <span style="color: #dcdcaa;" class="mycode_color">redirect</span><br />
<span style="color: #c586c0;" class="mycode_color">from</span> <span style="color: #4ec9b0;" class="mycode_color">datetime</span> <span style="color: #c586c0;" class="mycode_color">import</span> <span style="color: #4ec9b0;" class="mycode_color">datetime</span><br />
<span style="color: #c586c0;" class="mycode_color">from</span> <span style="color: #4ec9b0;" class="mycode_color">flask</span> <span style="color: #c586c0;" class="mycode_color">import</span> <span style="color: #dcdcaa;" class="mycode_color">send_from_directory</span><br />
<span style="color: #c586c0;" class="mycode_color">import</span> <span style="color: #4ec9b0;" class="mycode_color">os</span><br />
<span style="color: #9cdcfe;" class="mycode_color">app</span> <span style="color: #d4d4d4;" class="mycode_color">=</span> <span style="color: #4ec9b0;" class="mycode_color">Flask</span>(<span style="color: #9cdcfe;" class="mycode_color">__name__</span>)<br />
<span style="color: #dcdcaa;" class="mycode_color">@</span><span style="color: #9cdcfe;" class="mycode_color">app</span><span style="color: #dcdcaa;" class="mycode_color">.route</span>(<span style="color: #ce9178;" class="mycode_color">"/"</span>)<br />
<span style="color: #569cd6;" class="mycode_color">def</span> <span style="color: #dcdcaa;" class="mycode_color">inicio</span>():<br />
    <span style="color: #c586c0;" class="mycode_color">return</span> <span style="color: #dcdcaa;" class="mycode_color">render_template</span>(<span style="color: #ce9178;" class="mycode_color">"index.html"</span>)<br />
<span style="color: #c586c0;" class="mycode_color">if</span> <span style="color: #9cdcfe;" class="mycode_color">__name__</span> <span style="color: #d4d4d4;" class="mycode_color">==</span> <span style="color: #ce9178;" class="mycode_color">"__main__"</span>:<br />
    <span style="color: #9cdcfe;" class="mycode_color">app</span>.<span style="color: #dcdcaa;" class="mycode_color">run</span>(<span style="color: #9cdcfe;" class="mycode_color">debug</span><span style="color: #d4d4d4;" class="mycode_color">=</span><span style="color: #569cd6;" class="mycode_color">True</span>)</span></span></span><br />
<br />
      <span style="color: #000000;" class="mycode_color">He probado de todas las formas los directorios y no ha funcionado de ninguna de las maneras. El ejemplo que he dejado es aleatorio.</span><br />
<br />
<span style="color: #000000;" class="mycode_color">      La máquina ve va autocompletando en la dirección correcta. He probado incluso desde a raíz o metiendo "../". Vamos toda la combinatoria posible.</span><br />
<br />
<span style="color: #000000;" class="mycode_color">      Por lo tanto no es la ruta de carga. He puesto otra imagen y cambiado en nombre (por si acaso), y tampoco.</span><br />
<span style="color: #000000;" class="mycode_color">      Finalmente he probado desde Windows abriendo en fichero directamente pulsando el "index.html" y me ha cargado la imagen con las siguientes rutas:</span><br />
<br />
<span style="color: #000000;" class="mycode_color">              ../templates/imagenes/portada_1.jpg</span><br />
<span style="color: #000000;" class="mycode_color">y en</span><br />
<span style="color: #000000;" class="mycode_color"> </span><br />
<span style="color: #000000;" class="mycode_color">              imagenes/portada_1.jpg</span><br />
<br />
<span style="color: #000000;" class="mycode_color">Para volverse loco.</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[es problema de tabuladores?]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1423</link>
			<pubDate>Mon, 25 Dec 2023 03:04:45 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1500">JFalco</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1423</guid>
			<description><![CDATA[Tengo errores que no sé cómo depurar.<br />
<br />
<br />
expected 2 blank lines, found 0<br />
<br />
<br />
no newline at end of file<br />
<br />
Despues de estar mirando veo que al resaltar con el ratón se marcan 3 puntos de sangría en los márgenes. <br />
<br />
¿Ese eso? ¿Cómo se soluciona?<br />
<br />
Gracias<br />
<hr class="mycode_hr" />
Pese al los errores que devuelve, funciona en el Localhost.]]></description>
			<content:encoded><![CDATA[Tengo errores que no sé cómo depurar.<br />
<br />
<br />
expected 2 blank lines, found 0<br />
<br />
<br />
no newline at end of file<br />
<br />
Despues de estar mirando veo que al resaltar con el ratón se marcan 3 puntos de sangría en los márgenes. <br />
<br />
¿Ese eso? ¿Cómo se soluciona?<br />
<br />
Gracias<br />
<hr class="mycode_hr" />
Pese al los errores que devuelve, funciona en el Localhost.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[No ejecuta primera aplicación en Flask]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1421</link>
			<pubDate>Fri, 22 Dec 2023 11:03:40 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1500">JFalco</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1421</guid>
			<description><![CDATA[<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Buenas tardes a todos:</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">          Después de muchos años trabajando con ASP para montar mi WEB he decido empezar a familiarizarme con Python.</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">     He entrado por primera vez a ver cómo va la cosa en algunas tutoriales de Youtube. Bien, esta es mi pregunta:</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Con todo instalado correctamente (Pythom, Flask) Siguiendo las instrucciones y con el editor Visual Studio pruebo a montar mi primer "index.py" con el mismo código que se indica:</span></span><br />
<br />
<br />
<span style="color: #cccccc;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><span style="color: #c586c0;" class="mycode_color">from</span> <span style="color: #4ec9b0;" class="mycode_color">flask</span> <span style="color: #c586c0;" class="mycode_color">import</span> <span style="color: #4ec9b0;" class="mycode_color">Flask</span><br />
<span style="color: #9cdcfe;" class="mycode_color">app</span> <span style="color: #d4d4d4;" class="mycode_color">=</span> <span style="color: #4ec9b0;" class="mycode_color">Flask</span>(<span style="color: #9cdcfe;" class="mycode_color">__name__</span>)<br />
<span style="color: #c586c0;" class="mycode_color">if</span> <span style="color: #9cdcfe;" class="mycode_color">__name__</span> <span style="color: #d4d4d4;" class="mycode_color">==</span> <span style="color: #ce9178;" class="mycode_color">"_main_"</span>:<br />
    <span style="color: #9cdcfe;" class="mycode_color">app</span>.<span style="color: #dcdcaa;" class="mycode_color">run</span>()</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Ejecuto:</span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">C:\Users\jaime\Desktop\app_flask&gt;python .\index.py</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Pero no devuelve nada.</span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"> </span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">C:\Users\jaime\Desktop\app_flask&gt;</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">He mirado por ahí y no he visto nada ¿Alguien sabe por qué?</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Muchas gracias. este es mi primer post en el foro.</span></span>]]></description>
			<content:encoded><![CDATA[<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Buenas tardes a todos:</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">          Después de muchos años trabajando con ASP para montar mi WEB he decido empezar a familiarizarme con Python.</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">     He entrado por primera vez a ver cómo va la cosa en algunas tutoriales de Youtube. Bien, esta es mi pregunta:</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Con todo instalado correctamente (Pythom, Flask) Siguiendo las instrucciones y con el editor Visual Studio pruebo a montar mi primer "index.py" con el mismo código que se indica:</span></span><br />
<br />
<br />
<span style="color: #cccccc;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><span style="color: #c586c0;" class="mycode_color">from</span> <span style="color: #4ec9b0;" class="mycode_color">flask</span> <span style="color: #c586c0;" class="mycode_color">import</span> <span style="color: #4ec9b0;" class="mycode_color">Flask</span><br />
<span style="color: #9cdcfe;" class="mycode_color">app</span> <span style="color: #d4d4d4;" class="mycode_color">=</span> <span style="color: #4ec9b0;" class="mycode_color">Flask</span>(<span style="color: #9cdcfe;" class="mycode_color">__name__</span>)<br />
<span style="color: #c586c0;" class="mycode_color">if</span> <span style="color: #9cdcfe;" class="mycode_color">__name__</span> <span style="color: #d4d4d4;" class="mycode_color">==</span> <span style="color: #ce9178;" class="mycode_color">"_main_"</span>:<br />
    <span style="color: #9cdcfe;" class="mycode_color">app</span>.<span style="color: #dcdcaa;" class="mycode_color">run</span>()</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Ejecuto:</span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">C:\Users\jaime\Desktop\app_flask&gt;python .\index.py</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Pero no devuelve nada.</span></span><br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"> </span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">C:\Users\jaime\Desktop\app_flask&gt;</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">He mirado por ahí y no he visto nada ¿Alguien sabe por qué?</span></span><br />
<br />
<span style="color: #000000;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font">Muchas gracias. este es mi primer post en el foro.</span></span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Python - Flask - formularios]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1390</link>
			<pubDate>Fri, 25 Aug 2023 15:21:30 -0700</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1464">ragnarok</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1390</guid>
			<description><![CDATA[Hola.<br />
Como muchos ingresé a este foro para consultas, gracias por su tiempo.<br />
Estoy aprendiendo hacer aplicaciones web con python como backend y flask como framework. Para practicar procesos CRUD me propuse hacer un control de inventarios, algo sencillo que me acostado mucho, tabla de clientes, proveedores, entradas, salidas y otras cosas como tipo de producto, almacén, esto últimos para llenar input tipo selección. Tambien hice mi base de datos en MySql<br />
<br />
Todavía estoy inseguro de seguir con Python porque algunas cosas se tienen que hacer en JavaScript ?, e inicie con Python porque decían que era fácil de aprender.<br />
<br />
Bueno la pregunta es que tengo la tabla entradas y la tabla entradas_detalle, como sabrán en entradas guardo los datos generales y en entradas_detalle los productos que se van ingresando, se supone que se vayan "agregando" filas a medida que se ingresan más productos al registro.<br />
No sé si lo que pregunto es tonto, pero se puede hacer un formulario con un subformulario, o un formulario anidado, o como hago un formulario que vaya agregando líneas dinámicamente y esté relacionado a la llave del formulario principal, o alguna sugerencia sin usar JavaScript ?.<br />
<br />
La otra pregunta es que, cual framework es mejor, Flask o Django.<br />
Para interesados les dejo TODO lo que he hecho, esta lo básico para aprender CRUD <span style="color: #cccccc;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><span style="color: #6a9955;" class="mycode_color">(Crear, Leer, Actualizar, Eliminar)</span></span></span>, CSS, cuando lo completo lo paso a este foro. <br />
<br />
Gracias por su repuesta.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://foro.recursospython.com/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=174" target="_blank" title="">Inventario.zip</a> (Tamaño: 32,32 KB / Descargas: 2)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Hola.<br />
Como muchos ingresé a este foro para consultas, gracias por su tiempo.<br />
Estoy aprendiendo hacer aplicaciones web con python como backend y flask como framework. Para practicar procesos CRUD me propuse hacer un control de inventarios, algo sencillo que me acostado mucho, tabla de clientes, proveedores, entradas, salidas y otras cosas como tipo de producto, almacén, esto últimos para llenar input tipo selección. Tambien hice mi base de datos en MySql<br />
<br />
Todavía estoy inseguro de seguir con Python porque algunas cosas se tienen que hacer en JavaScript ?, e inicie con Python porque decían que era fácil de aprender.<br />
<br />
Bueno la pregunta es que tengo la tabla entradas y la tabla entradas_detalle, como sabrán en entradas guardo los datos generales y en entradas_detalle los productos que se van ingresando, se supone que se vayan "agregando" filas a medida que se ingresan más productos al registro.<br />
No sé si lo que pregunto es tonto, pero se puede hacer un formulario con un subformulario, o un formulario anidado, o como hago un formulario que vaya agregando líneas dinámicamente y esté relacionado a la llave del formulario principal, o alguna sugerencia sin usar JavaScript ?.<br />
<br />
La otra pregunta es que, cual framework es mejor, Flask o Django.<br />
Para interesados les dejo TODO lo que he hecho, esta lo básico para aprender CRUD <span style="color: #cccccc;" class="mycode_color"><span style="font-family: Consolas, 'Courier New', monospace;" class="mycode_font"><span style="color: #6a9955;" class="mycode_color">(Crear, Leer, Actualizar, Eliminar)</span></span></span>, CSS, cuando lo completo lo paso a este foro. <br />
<br />
Gracias por su repuesta.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://foro.recursospython.com/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=174" target="_blank" title="">Inventario.zip</a> (Tamaño: 32,32 KB / Descargas: 2)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Embedded Powerbi]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1359</link>
			<pubDate>Thu, 11 May 2023 05:14:35 -0700</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1425">peya02</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1359</guid>
			<description><![CDATA[Hola,<br />
<br />
no se si me podrían ayudar. Tengo una aplicación (app1) en flask donde hace un embedded de informe power bi. Por otro lado tengo otra aplicación (app2) que simplemente tengo configurado usuario y una pagina inicial. <br />
Lo que quiero es poder utilizar el embedded de la app1 en la app2, pero no se como hacerlo. Si alguien puede ayudarme le enviaría las dos apps en zip para que les echara un vistazo.<br />
Saludos,]]></description>
			<content:encoded><![CDATA[Hola,<br />
<br />
no se si me podrían ayudar. Tengo una aplicación (app1) en flask donde hace un embedded de informe power bi. Por otro lado tengo otra aplicación (app2) que simplemente tengo configurado usuario y una pagina inicial. <br />
Lo que quiero es poder utilizar el embedded de la app1 en la app2, pero no se como hacerlo. Si alguien puede ayudarme le enviaría las dos apps en zip para que les echara un vistazo.<br />
Saludos,]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Ayuda con código recorrer web]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1328</link>
			<pubDate>Fri, 10 Mar 2023 09:13:15 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1408">miguelsat</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1328</guid>
			<description><![CDATA[Hola, necesito ayuda con código que recorra una página hasta el final y muestre todos los links de videos, la página requiere un login y contraseña, tiene más de 2000 posts que se van cargando de 5 en 5, conforme se va desplazando hacia abajo, la mayoría de las veces se queda parado cargando posts, si se cargaran todos ellos, podría ver el código fuente y extraer los enlaces pero nunca consigo que se carguen todos, agradezco toda la ayuda.]]></description>
			<content:encoded><![CDATA[Hola, necesito ayuda con código que recorra una página hasta el final y muestre todos los links de videos, la página requiere un login y contraseña, tiene más de 2000 posts que se van cargando de 5 en 5, conforme se va desplazando hacia abajo, la mayoría de las veces se queda parado cargando posts, si se cargaran todos ellos, podría ver el código fuente y extraer los enlaces pero nunca consigo que se carguen todos, agradezco toda la ayuda.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Crear lista de fechas vencimiento de pagos]]></title>
			<link>https://foro.recursospython.com/showthread.php?tid=1303</link>
			<pubDate>Thu, 29 Dec 2022 05:32:59 -0800</pubDate>
			<dc:creator><![CDATA[<a href="https://foro.recursospython.com/member.php?action=profile&uid=1378">martincho</a>]]></dc:creator>
			<guid isPermaLink="false">https://foro.recursospython.com/showthread.php?tid=1303</guid>
			<description><![CDATA[Hola a todos.<br />
Soy nuevo en la programación y luego de aprender lo básico en Python estoy estudiando django.<br />
Si es posible desearía me puedan ayudar con algo que me tiene estresado (obviamente falta de experiencia).<br />
Estoy creando una aplicación en Django en donde tiene un formulario para ingresar  nombre de cliente, fecha de inicio, periodo de años y forma de pago.<br />
Necesito que al colocar la fecha de inicio, el periodo y la forma de pago (Ejemplo pago cada 45 días), el sistema calcule durante esos 3 años cuales son las fecha que debería realizarle el pago a ese cliente.<br />
<br />
Ej: ingreso el 31/12/22 y quiero invertir durante 3 años, pero quiero que me paguen x comisión cada 45 días (tomando encuenta la fecha que yo realice la inversión y de ahí sume 45 días a cada fecha durante los 3 años de inversión que seleccione) y luego yo pueda visualizar las fechas de pago para ese cliente.]]></description>
			<content:encoded><![CDATA[Hola a todos.<br />
Soy nuevo en la programación y luego de aprender lo básico en Python estoy estudiando django.<br />
Si es posible desearía me puedan ayudar con algo que me tiene estresado (obviamente falta de experiencia).<br />
Estoy creando una aplicación en Django en donde tiene un formulario para ingresar  nombre de cliente, fecha de inicio, periodo de años y forma de pago.<br />
Necesito que al colocar la fecha de inicio, el periodo y la forma de pago (Ejemplo pago cada 45 días), el sistema calcule durante esos 3 años cuales son las fecha que debería realizarle el pago a ese cliente.<br />
<br />
Ej: ingreso el 31/12/22 y quiero invertir durante 3 años, pero quiero que me paguen x comisión cada 45 días (tomando encuenta la fecha que yo realice la inversión y de ahí sume 45 días a cada fecha durante los 3 años de inversión que seleccione) y luego yo pueda visualizar las fechas de pago para ese cliente.]]></content:encoded>
		</item>
	</channel>
</rss>