bibigeek.com  Tu blog de Programación Geek: Java, php, J2EE... y mucho más

Archive for the ‘ Django ’ Category

Hola a tod@s de nuevo,

Al fiiinnnnn, por dos razones importantes:

  • Una, porque hacia tiempo que no escribía (y mirad que tengo temas, pero también mucho trabajo…)
  • Y dos… ya he podido configurar Django con MySQL. Se me resistía, una y otra vez, todo porque me faltaba instalar python-mysqldb, de lo contario siempre me daba errores.

Voy a dividir la instalación en puntos para que se pueda leer, comprender y que el seguimiento sea lo más simple posible. Empecemos.

Requisitos necesarios para instalar Django con MySQL

  • Sistema Operativo Linux (testeado en Ubuntu Karmic Koala), para los Maqueros como en mi caso tendremos que esperar a que pueda hacer pruebas :P
  • Versión de Django 1.1.1  instalado (esper que con versiones anteriores o posteriores no tiene porque ser diferente)
  • Motor de Base de Datos MySQL (versión, yo tengo la 5.1.37) tanto el servidor como el cliente.
  • (Opcional) Instalación de MySQL Administrator y MySQL Query Browser
  • Paquete python-mysqldb (pero se explicará con más detalle)

Instalación MySQL Administrator y MySQL Query Browser

1- Primero buscamos el paquete mysql-admin con el siguiente comando:


sudo aptitude search mysql-admin

2- La salida que obtenemos es:


bibigeek@macbookpro-bibigeek:~/PythonProjects$ sudo aptitude search mysql-admin
pB  mysql-admin               - Herramienta gráfica para una administración sencilla de MySQL

3- Ahora ya ponemos a instalar el paquete mysql-admin con el comando:


sudo aptitude install mysql-admin

4- La salida de la instalación es (importante fijaros en el texto en negrita y subrayado):


Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Se instalarán los siguiente paquetes NUEVOS:
libgnomecups1.0-1{a} libgnomeprint2.2-0{a} libgnomeprint2.2-data{a} libgnomeprintui2.2-0{a} libgnomeprintui2.2-common{a}
libgtkhtml3.8-15{a} libmysqlclient15off{a} mysql-admin mysql-gui-tools-common{a} mysql-query-browser{a} 
0 paquetes actualizados, 10 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 0B/6212kB de archivos. Después de desempaquetar se usarán 22,3MB.
¿Quiere continuar? [Y/n/?] y
Escribiendo información de estado extendido... Hecho

Seleccionando el paquete libgnomecups1.0-1 previamente no seleccionado.

...

Configurando mysql-gui-tools-common (5.0r12-1ubuntu2) ...
Configurando mysql-admin (5.0r12-1ubuntu2) ...

Configurando mysql-query-browser (5.0r12-1ubuntu2) ...

Procesando disparadores para libc-bin ...
ldconfig deferred processing now taking place
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Escribiendo información de estado extendido... Hecho

5- Pantallazo de donde podemos encontrar los programas instalados:

Creación del Proyecto testProject

1- Ahora creamos el proyecto Django, un proyecto de prueba. Lo denominaré “testProject”, ejecutamos el siguiente comando:


django-admin.py startproject testProject

2- Configuraremos el proyecto Django para que funcione con el motor de BD MySQL. Alerta, estoy suponiendo que el usuario test y la Base de Datos testDB está creado. Os adjunto los valores a modificar en el fichero settings.py y también adjunto un pantallazo:


12 DATABASE_ENGINE = 'mysql'
13 DATABASE_NAME = 'testDB'
14 DATABASE_OPTIONS ={"init_command":"SET storage_engine=INNODB"}
15 DATABASE_USER = 'test'
16 DATABASE_PASSWORD = 'test'
17 DATABASE_HOST = 'localhost'
18 DATABASE_PORT = '3306'


IMPORTANTE: fijaos que he puesto una opción que no viene por defecto el fichero settings.py, que es el DATABASE_OPTIONS. Esta opción es utilizada para especificarle a Django que las tablas que tienen que crear en MySQL son de la tecnología INNODB.

3- Ahora ejecutamos el comando “syncdb” para crear la estructura de Base de Datos para Django. Veréis por los siguiente pantallazos y textos expuestos, que no funciona y nos mostrara un error. Veamosló todo:


bibigeek@macbookpro-bibigeek:~/PythonProjects/testProject$ python manage.py syncdb
Traceback (most recent call last):
File "manage.py", line 11, in <module>
execute_manager(settings)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 362, in execute_manager
utility.execute()
File "/usr/local/lib/python2.6/dist-packages/django/core/management/__init__.py", line 303, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 195, in run_from_argv
self.execute(*args, **options.__dict__)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 221, in execute
self.validate()
File "/usr/local/lib/python2.6/dist-packages/django/core/management/base.py", line 249, in validate
num_errors = get_validation_errors(s, app)
File "/usr/local/lib/python2.6/dist-packages/django/core/management/validation.py", line 22, in get_validation_errors
from django.db import models, connection
File "/usr/local/lib/python2.6/dist-packages/django/db/__init__.py", line 41, in <module>
backend = load_backend(settings.DATABASE_ENGINE)
File "/usr/local/lib/python2.6/dist-packages/django/db/__init__.py", line 17, in load_backend
return import_module('.base', 'django.db.backends.%s' % backend_name)
File "/usr/local/lib/python2.6/dist-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/usr/local/lib/python2.6/dist-packages/django/db/backends/mysql/base.py", line 13, in <module>
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

Instalación del paquete Python-mysqldb

Como habréis notado y visto, cuando hemos ejecutado el syncdb nos ha proporcionado una serie de errores. Esto lo solucionaremos con la instalación del paquete “python-mysqldb”. Para instalarlo podemos ejecutar los siguientes comandos y os tendría que aparecer en la salida algo similar a esto:


bibigeek@macbookpro-bibigeek:~/PythonProjects/testProject$ sudo aptitude search python-mysql
[sudo] password for bibigeek:
p   python-mysqldb                       - Una interfaz Python para MySQL
p   python-mysqldb-dbg              - Una interfaz Python para MySQL (extensión de depuración)

bibigeek@macbookpro-bibigeek:~/PythonProjects/testProject$ sudo aptitude install python-mysqldb
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Se instalarán los siguiente paquetes NUEVOS:
python-mysqldb
0 paquetes actualizados, 1 nuevos instalados, 0 para eliminar y 0 sin actualizar.
Necesito descargar 0B/98,5kB de archivos. Después de desempaquetar se usarán 352kB.
Escribiendo información de estado extendido... Hecho
Seleccionando el paquete python-mysqldb previamente no seleccionado.
(Leyendo la base de datos ...  00%
153203 ficheros y directorios instalados actualmente.)
Desempaquetando python-mysqldb (de .../python-mysqldb_1.2.2-10_i386.deb) ...
Configurando python-mysqldb (1.2.2-10) ...
Procesando disparadores para python-support ...
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes... Hecho
Escribiendo información de estado extendido... Hecho

Resultado final de Django con MySQL

1- Si en estos momentos ejecutamos el syncdb tendremos el siguiente resultado (texto y pantallazo):


bibigeek@macbookpro-bibigeek:~/PythonProjects/testProject$ python manage.py syncdb
Creating table auth_permission
Creating table auth_group
Creating table auth_user
Creating table auth_message
Creating table django_content_type
Creating table django_session
Creating table django_site

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (Leave blank to use 'bibigeek'): demo
E-mail address: bibigeek@gmail.com
Password:
Password (again):
Superuser created successfully.
Installing index for auth.Permission model
Installing index for auth.Message model

Para que podáis comprobar que esta se ha echo realidad (es que al fin lo he podido hacer funcionar…) os ajunto un pantallazo del MySQL Administrator con el diseño del schema testDB, veamosló:

Como habréis visto en la imagen, las tablas creadas son INNODB, importante :P

Espero que os haya servido de algo y suerte!!!!!

Me estoy introduciendo en el mundo Python y en el mundo Django… seguro que os habréis dado cuenta por los últimos Post que he escrito.

Realizando el tutorial de Django me estoy encontrando de que mi editor VIM, para editar o crear ficheros desde mi Terminal Mac, no cumple una de las condiciones del Lenguaje Python, la Indentación o también denominado Sangrado.
Por defecto el sangrado que tiene que tener un fichero en Python son de 4 espacios y hay que especificar explicitamente que nuestra tecla Tabulador sean 4 espacios… de esta forma seguro que nos ahorraremos muchos dolores de cabeza, ¿o no Andrés?

Tenemos que editar el fichero VIMRC que en el Mac OS X lo encontraremos en el directorio siguiente:


Directorio: /usr/share/vim/vimrc

Alerta, para editar el fichero tendremos que tener permisos de root o de usuario avanzado :P , con el siguiente comando os tendría que ir correctamente:


sudo vim vimrc

Teneís que añadir el siguiente código dentro del fichero después del “syntax on” :


set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
set background=dark
set autoindent

autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class

Os adjunto todo el contenido de mi fichero vimrc, por si queda alguna duda:


" Configuration file for vim
set modelines=0     " CVE-2007-2438

" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible    " Use Vim defaults instead of 100% vi compatibility
set backspace=2     " more powerful backspacing

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup

syntax on

set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4
set background=dark
set autoindent

autocmd BufRead *.py set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class

Espero que os haya servido de mucho :) .

Ah por cierto, este mismo código os servirá para las distribuciones Linux – Unix (ubuntu, debian…) sólo que ha que tener en cuenta que el fichero vimrc lo podremos encontrar en otro directorio, por ejemplo, en Ubuntu o Debian lo encontraremos en el directorio:


sudo vim /etc/vim/vimrc

Si tenéis dudas ya sabéis que podéis contactar conmigo cuando queráis. Saludossssss

Link al artículo original

Otra experiencia informática,

Ahora sí… os voy a explicar como instalar desde cero el Django. Pero antes tendremos que comprobar una serie de puntos importantes, como la de saber si tenemos instalado el Python, o si ya tenemos alguna versión del Django instalada y lo desconocíamos…

Pasos previos a Instalar Django en un Mac

1. Comprobar si tenemos instalado el Intérprete de Python y que versión tenemos instalada. Para comprobar sólo sera necesario ejecutar el comando “python” desde la terminal. Por defecto Mac ya lo tiene instalado, pero no cuesta nada coprobarlo ¿no? Pongo una ilustración (una imagen vale más que mil palabras):

Interprete Python

En esta imagen podréis ver que tengo instalado el python y al ejecutar el comando python ya tenemos rulando el intérprete en el Mac. Fijáos en las líneas superiores.., el “python” que está ejecuntándose es la versión 2.6, versión apta para el Django. Actualmente si tenéis una versión del python superior a la 2.6 el Django no funcionará, por lo tanto es algo a tener muy en cuenta.

Para salir del intérprete de python sólo basta con ejecutar la función: exit().

Salir Interprete Python

2. Comprobar que no tenemos nínguna versión de Django instalada. En este punto voy a centrarme en la de instalar el Django estable, ya que desde la página oficial de DjangoProjects podemos instalarlo de 3 formas diferentes. La versión estable de Django se instala en el directorio site-packages de nuestra versión de Python. Supongo que cada distribución linux, y en este caso el Mac, podemos encontrar este directorio en lugares diferentes. Para conocer donde tenemos el site-packages tenemos que ejecutar el siguiente comando:


python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

Os puedo decir que en Mac OC X el Python lo podemos encontrar en /Library/Python/2.6/ (he puesto 2.6 porque es el que se está ejecutando). Pongo otra imagen para que veáis un ejemplo:

Site Packages Python

Por lo tanto, tenemos que acceder al directorio especificado en la ejecución del comando y ejecutamos el comando: ls -l.

Site Packages Django

Si tenemos alguna carpeta llamada django, significa que tenemos alguna versión instalada. Por lo tanto, podemos  proceder a su eliminación y será tan fácil como eliminar la carpeta django.

Pasos para Instalar Django en Mac OS X

Paso 1. Descargar la versión estable

Paso 2. Descomprimimos el fichero. Podemos descomprimirlo desde Terminal o del entorno gráfico, es totalmente indiferente.

Paso 3. Tenemos que acceder a la carpeta que hemos descomprimido. Adjunto ilustración:

Directorio Django 1_11

Paso 4. Ejecutamos el siguiente comando dentro del directorio que hemos descomprimido:


sudo python setup.py install

La ejecución de este comando su función ha sido la de instalar el django dentro de la carpeta site-packages de nuestro python.

Paso 5. Comprobar que se ha instalado correctamente.

Para verificar si se ha instalado correctamente tenemos que comprobar que dentro del site-packages se ha creado una nueva carpeta con el nombre django en el cual podemos encontrar ficheros y directorios, por ejemplo:

django Site Packages

Hasta aquí la instalación del Django en un Mac OS X. A disfrutarlo!!!!!