Entradas con la etiqueta “django”

Utilizar InnoDB en Django

8 de agosto, 2011 - por | | Desarrollo, Tips

Si estás empezando a trabajar con Django y vas a utilizar MySQL, te conviene pararte un momento a mirar si estás utilizando el tipo de almacenamiento que realmente quieres.

Al generar los esquemas, Django no especifica ningún tipo de almacenamiento; sencillamente los genera con el que está establecido en tu servidor de MySQL. Así que si aún no has generado ningún esquema, revisa tu configuración de MySQL. Todas las versiones previas a la 5.5 hacían de MyISAM el almacenamiento por defecto.

La configuración del tipo de almacenamiento la puedes hacer directamente en MySQL, o especificarla en los settings de tu conexión a la base de datos en Django utilizando la opción “init_command”. Por ejemplo, del siguiente modo para establecer InnoDB como el tipo almacenamiento por defecto.


'OPTIONS': {
   'init_command': 'SET storage_engine=INNODB',
}

Si ya cuentas con algunas tablas, y te encuentras con que están con un tipo de almacenamiento distinto al que tu pensabas, te va a tocar modificar las tablas en la forma habitual:


ALTER TABLE tablename ENGINE=INNODB;

Instalar MySQLdb-Python en CentOS para utilizar sobre Django

6 de agosto, 2011 - por | | Sistemas, Tips

Si desarrollas sobre Django y lo haces tirando de una base de datos sobre MySQL, conectar Python a ésta en un entorno CentOS puede ser más difícil de lo que uno imagina. El paquete que CentOS instala por defecto para el driver de MySQL (“MySQL-python”) no cumple con los requisitos de Django, por antiguo. Así que si intentas hacer la instalación habitual:


yum install MySQL-python

te encontrarás con que cuando vas a levantar tu instancia de Django, ésta dice que no puede conectar a MySQL.

La solución más efectiva es tirar de “easy_install”:


easy_install mysql-python

Como lo que vas a ejecutar es una compilación de las fuentes del driver, tienes que tener instalados “gcc” y “python-devel”. De lo contrario, verás que aparecen errores de compilación. Para instalar éstos:


yum install gcc


yum install python-devel

Autenticación en Django a través de Facebook, Gmail, Twitter, Yahoo y OpenID

26 de enero, 2011 - por | 2 comentarios | Análisis, Desarrollo

Cuando uno está montando un nuevo sitio en forma de directorio, suele partir de una base de contenidos a los que espera sumar otros procedentes de los usuarios. Esta acción por parte de los usuarios siempre es algo difícil de conseguir, porque en definitiva se trata de su tiempo y su esfuerzo. Y los procesos de registro/login no suelen ayudar a corregir ese esfuerzo, sino que con frecuencia lo agrandan.

Esto se hace particularmente grave en sitios que consideran que el índice de regreso de sus usuarios es muy bajo. En estos casos se suelen aceptar contenidos, al menos en una fase inicial, sin necesidad de registro. La contrapartida es que los contenidos quedan huérfanos y tienen menos credibilidad. El sitio en definitiva puede llegar a tener más contenidos, pero de menos calidad.

Yo suelo tener una opinión contraria a este tipo de planteamientos, porque: 1) nunca sabes completamente el tipo de usuario que vas a tener (tu índice de regreso no es algo infalible ni está distribuido de forma homogénea en el 100% de tus usuarios, por lo que puedes llegar a perder porcentajes pequeños pero significativos desde el punto de vista de su actividad); y 2) porque acabas aplazando al medio plazo la decisión inicial, y entonces te encuentras con la difícil de decisión de mezclar contenidos (unos huérfanos, los otros ya con autores), o de dejarlos para siempre tal como están. Creo que hay soluciones intermedias.

Una de las más populares es ofrecer el registro a través de terceros, es decir, de alguna herramienta que ya esté utilizando el usuario. La más popular es, sin duda, Facebook, pero podría ser Gmail, Twitter, Yahoo, o cualquier otro servicio en el que sepas que tus usuarios ya tienen una cuenta. De esa forma les evitas el tedioso proceso de crearse una cuenta (otra más) y al mismo tiempo no sacrificas la calidad de los contenidos desde el momento 0.

Si trabajas con Django, cuentas con Django-Socialauth, que ofrece login a través de los servicios mencionados y alguno más, menos frecuente eso sí, como OpenID. Además, permite importar contactos y ver cuáles están ya como usuarios del sitio.Y, por supuesto, junto a ésto siempre puedes ofrecer un registro clásico. No hay necesidad de sacrificar nada. :)