Django: hosting gratuito

Desde http://www.alwaysdata.com/ nos ofrecen la posibilidad de crearnos una cuenta gratuita que nos ofrece servicio de hosting para nuestros proyectos en django.
La página de registro está en francés pero una vez dado de alta como usuario, el panel de administración está en español.

Todavía no he podido configurar el servidor para hacer alguna prueba pero parece que tiene buena pinta. Tenía ganas de encontrar un servicio de hosting gratuito para django.

En cuanto haya subido algo al servidor, ya os comentaré.

http://www.alwaysdata.com

PD: Si alguien lo prueba, no estaría mal que lo compartiese en la zona de comentarios.

Posted in django, pablo vieytes, python | Leave a comment

Django: Restaurar una tabla borrada a mano de una aplicación gestionada con South

Estaba haciendo unas pruebas con la base de datos y necesitaba limpiar una tabla, por error, en vez de eliminar el contenido, la borré.

Si intentas migrar la aplicación, no restaura la tabla, ya que south no comprueba si las tablas están creadas en la base de datos. Si por el contrario ejecutas el comando “python manage.py syncdb”, tampoco crea la tabla, si esta pertenece a un modelo. Te indica que esta tabla es gestionada por south. Para poder generar la tabla, se hace con el comando syncdb, pero además hay que incluir el parámetro -all.

python manage.py syncdb -all
Posted in django, nota, pablo vieytes, python, tip, trucos | Leave a comment

Gestor de paquetes easy_insatall

wikipedia:

EasyInstall es un gestor de paquetes para el lenguaje de programación Python que suministra un formato estándar para distribuir programas y librerías en Python, basado en el envoltorio llamado huevos de Python (Python eggs).

Para poder usar easy_isntall, es necesario instalar python-supertools.

apt-get install python-setuptools

Una vez que ya tenemos instalado python-supertools, ya se pueden instalar los “eggs” con easy_install.

Ejemplo de instalación:

easy_install PackageName

Ejemplo de desinstalación:

easy_install -m PackageName

Nota:
Es muy interesante el uso de easy_install con virtualenv. A ver si hago un pequeño post sobre el uso de virtualenvs.

Posted in django, pablo vieytes, python | Leave a comment

Borrar el historial de South.

Para reiniciar completamente el historial de South hay que hacer lo siguiente:

python manage.py migrate appname --fake zero

Este comando borra todo el historial de South.

A continuación se tienen que borrar los ficheros.

rm appname/migrations/*

En este momento ya tenemos el historial de South completamente limpio por lo que es necesario crear las nuevas migraciones:

python manage.py schemamigration appname --initial
python manage.py migrate appname

Si solamente queremos borrar el historial hasta un lugar concreto, hay que hacer lo siguiente:

python manage.py migrate appname --fake MIGRATION_NUMBER

El atributo –fake, indica que solamente se borran las migraciones de la base de datos, no afecta a lo que contiene la base de datos, es decir, no se aplican los cambios.

A continuación hay que borrar todos los archivos posteriores a la migración desde la que queremos partir que se encuentran en :

appname/migrations

A continuación creamos una nueva migración para guardar los cambios que hay en la base de datos. Al haber hecho “python manage.py migrate appname –fake MIGRATION_NUMBER”, simplemente se han borrado las migraciones de la base de datos pero no se han aplicado los cambios, ahora lo que nos indica South y lo que hay en la base de datos es diferente por lo que es necesario hacer una nueva migración:

python manage.py schemamigration appname --auto

El siguiente paso que debemos hacer, es aplicar la migración:

python manage.py migrate appname

Posted in django, python, south, trucos | Leave a comment

Probando la conexión wordpress twitter

He añadido un nuevo plugin al blog que me permite tweetear cada nuevo post. Veamos si funciona!!

Posted in varios | Tagged | Leave a comment

Notas. Algunos trucos de django

He encontrado algunos trucos en Stack Overflow. Pongo dos que me han gustado. El primero ya lo usaba, pero aun así lo pongo porque me parece básico. El segundo, es más bien de relleno. De los que había es el que más me gustaba. El post me vale más que nada de recordatorio. Iré échando un ojo al hilo de para ver si ponen alguno más que esté bien.

Direcciones relativas en el fichero settings.py:

import os.path
PROJECT_DIR = os.path.dirname(__file__)
STATIC_DOC_ROOT = os.path.join(PROJECT_DIR, "static")
TEMPLATE_DIRS = (
    os.path.join(PROJECT_DIR, "templates"),)

Un decorador para los templates:

@render_to('template.html')
def foo(request):    
    bar = Bar.object.all()
    return {'bar': bar}
 
   # equals todef foo(request):    
    bar = Bar.object.all()
    return render_to_response('template.html', {'bar': bar}, context_instance=RequestContext(request))
Posted in django, notas, pablo vieytes, python, tip, trucos | Leave a comment

Nota: Añadiendo south a un projecto existente de django

Hace poco tiempo, miré por encima como funcionaba south, pero no lo había usado hasta ahora. Simplemente había traducido y resumido el tutorial oficial para hacer un mini tutorial, pero sin incluirlo en ningún proyecto.

Ahora se ha añadido al proyecto sobre el que estoy trabajando el módulo south y por lo tanto tenía que añadir las migraciones correspondientes a la base de datos de mi ordenador de desarrollo.

No he sido capaz de añadir south sin borrar los datos que había previamente en las tablas. Me imagino que se podrá, pero como no me ha salido a la primera y los datos que tenía, eran de prueba, simplemente me he cargado las tablas de la base de datos.

El orden que he seguido es el siguiente:

Borrar las tablas de la base de datos se las aplicaciones que vaya a gestionar South.

Eliminar las aplicaciones de INSTALLED_APPS.

Sincronizar la base de datos.

Añadimos de nuevo las aplicaciones a INSTALLED_APPS.

Creamos la primera migración de las aplicaciones que vaya a gestionar South.

python manage.py schemamigration app_name –-initial

Donde app_name es el nombre de la aplicación que gestiona South. Hay que repetir este proceso para cada aplicación que gestionemos con South.

Ahora aplicamos la migración.

python manage.py migrate app_name

A partir de este momento, cada vez que se realice un cambio en los modelos, es necesario crear una nueva migración con:

manage.py schemamigration app_name –-auto

Para aplicar los cambios realizados hay que volver a usar:

python manage.py migrate app_name
Posted in django, nota, pablo vieytes, python, south | Leave a comment

Nota: Palabras Clave para los colores en CSS

Palabras clave para los colores en CSS.

X11 color names

http://en.wikipedia.org/wiki/Websafe

Posted in css, nota | Leave a comment

Nota: Script en Django

Puede ser una buena idea, para un proyecto de django, tener scripts externos que realicen tareas concretas. Para generar estos scripts, vamos a usar la opción, que tiene django a partir de la versión 1.0, de crear subcomandos para “manage.py”. Una vez creado el subcomando, para ejecutar el script, simplemente habrá que ejecutar el fichero “manage.py” pasándole como parámetro nuestro subcomando.

En la página de django, nos muestran como se crean los subcomandos.
Writing custom django-admin commands.

La metodología para crear los subcomandos es muy fácil, en el directorio de una app de django, hay que crear unos directorios y unos ficheros. El fichero que contiene el código del subcomando, tendrá el nombre del subcomando con la extensión “py”. Veamos como quedaría el directorio de la app si el nombre del subcomando fuese “my_subcommand”:

app/<br />    __init__.py<br />    models.py<br />    management/<br />        __init__.py<br />        commands/<br />            __init__.py<br />            my_subcommand.py<br />    tests.py<br />    views.py

Por los tanto los ficheros que hay que crear son:

  • management/__init__.py
  • management/commands/__init__.py
  • management/commands/my_subcommand.py

Es importante crear los ficheros __init__.py. Estos ficheros están en blanco, pero indican que los directorios son módulos de python.

En el fichero “management/commands/my_subcommand.py”, es donde hay que escribir el código del subcomando.

Como ejemplo, voy a poner un subcomando de “manage.py” que muestre el texto “Hello world!”.

Dentro del directorio de cualquier aplicación del proyecto, tiene que estar añadida la aplicación a INSTALLED_APPS, creamos los siguientes ficheros:

  • management/__init__.py
  • management/commands/__init__.py
  • management/commands/hello_world.py

Los ficheros __init__.py están vacíos, y en “management/commands/hello_world.py” copiamos el siguiente código.

from django.core.management.base import BaseCommand<br /><br />class Command(BaseCommand):<br />    help = 'check unchecked votes'<br /><br />    def handle(self, *args, **options):<br />        print "Hello world!"

Para ejecutar el script, hay que ir al directorio principal del proyecto y ejecutar en el terminal:

python manage.py hello_world

Este ejemplo es muy simple, y no usa los modelos de django, pero vale para ver como es la estructura de un subcomando. En el fichero que contiene el código del subcomando, se pueden importar los modelos como en cualquier otro fichero del proyecto.

from myproject.myapp.models import Model

Lo que nos permite generar scripts que interactúen con los modelos creados en nuestro proyecto y usar la metodología de django para trabajar con la base de datos.

Posted in django, nota, python, script | Leave a comment

Nota: Tutoriales oficiales de django

En la página web de django hay una gran variedad de tutoriales.

http://code.djangoproject.com/wiki/Tutorials

Posted in django, nota, python, tutorial | Leave a comment