Publicado el 3 comentarios

Las rutas (routes) no funcionan en Laravel.

En una aplicación web desarrollada con el framework Laravel (PHP) el ruteo (routing) no funcionaba, enviaba a una página inexistente. En este caso el problema era una configuración de Apache 2 donde estaba publicada dicha aplicación y no de la aplicación en si.

La solución fue la siguiente:

Se cambió la directiva AllowOverride del valor None a All dentro de la directiva Directory que contiene la trayecto de directorios donde se encuentra publicada la aplicación, dentro del archivo de configuración de Apache 2 (httpd.conf). En nuestro caso la aplicación se encontraba dentro del directorio raíz.

<Directory "/opt/www/apache2/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.2/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All <--- CAMBIAR VALOR None POR All

....

No olviden reiniciar el servicio de Apache 2 para que refleje los cambios.

Espero y les sirva.

¡Hasta la próxima!

Publicado el Dejar un comentario

¿Vendes aplicaciones programadas con Java Oracle SE 8? Esto te interesa.

A partir del 2019, el uso no personal de desarrollos en Java SE 8 cambia de licencia comercial:

“Las actualizaciones públicas de la versión 8 de Oracle Java SE seguirán disponibles para uso personal e individual al menos hasta finales de 2020.

Las actualizaciones públicas de la versión 8 de Oracle Java SE que se lancen a partir de enero de 2019 no estarán disponibles para uso empresarial, comercial o de producción sin licencia comercial.”

Para más información y detalles visita: https://www.java.com/es/download/release_notice.jsp

La opción ¿ OpenJDK?

Publicado el Dejar un comentario

Cómo hacer inners joins (concatenaciones internas) con la ORM de Django

Bueno, estamos ahora aquí en un proyecto que utiliza Django como su marco de trabajo.  Y aprendiendo su ORM (mapeo objeto-relacional) me tope con la necesidad de hacer las famosas concatenaciones (joins) entre dos o más entidades.

Anteriormente he trabajado con las ORM de java (Hibernate, EclipseLink) y de .Net (Entity Framework) así que la de ORM  de Django y su QuerySet debería ser capaz de hacer concatenaciones (joins).

Para hacer concatenaciones internas en Django, utilizamos la función select_related(). Según la documentación, esta función sólo sigue relaciones de llaves foráneas (foreign-key), es decir, de tablas hijas a tablas padre o relaciones de uno a uno.

Imagina los registros en una tabla que representa los artículos vendidos de una factura. Llamaremos a la table linea_factura. Esta tabla tendrá como llaves foráneas el identificador de la factura de la tabla factura y el identificador del artículo de la tabla articulo.

Con select_related() sólo podríamos seguir las relaciones de llaves foráneas, es decir sólo podríamos relacional las lineas de la factura con la factura y/o con los artículos pero no en el sentido contrario, es decir, de la factura hacia las lineas de la factura, o de artículos  la linea de artículo. Para esto existe otra función que aún no he probado y espero tratar más adelante.

El código siguiente, que omite la definición de los modelos,  para obtener el QuerySet quedaría así:

lineas_factura = linea_factura.objects.select_related(‘factura’)
.select_relate(‘articulo’).filter(factura__no = 89)

Una vez que el programa haga referencia a la variable lineas_factura, este QuerySet lanzará la consulta sql con dos joins y cargará con los registros de linea_factura y la información relacionada de la tabla factura y de la tabla artículo, donde el número de  factura sea igual a 89. Es decir, la factura número 89 y su detalle.

Espero les sea claro. Si no, comenta el post.

¡Hasta la próxima!