26 abr. 2015

Darle estilo material design a Django (parte 1, el admin)

Continuando con los artículos sobr Django.

En este caso se tocará el tema de usar en el admin y formularios un estilo llamado Material Design (desarrollado por Google para Android), la idea es que nuestro backend tenga ese estilo. Para ello se tiene una aplicación de Django llamada Django-material .

La documentación de django-material la pueden ver en el siguiente enlace.

Instalación:
Para instalar django-material se ejecuta el comando pip:
pip install django-material

Se crea el proyecto prueba:
django-admin startproject prueba

Se tiene los siguientes directorios y archivos:


prueba
├── manage.py
└── prueba
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py




En settings.py se agrega las aplicaciones :
  • material
  • material.admin

Al final se tiene lo siguiente en la sección de aplicaciones:


# Application definition

INSTALLED_APPS = (
    'material',
    'material.admin',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)

Nota: material.admin debe estar antes que admin.

Se ejecuta manage.py migrate:
ecrespo@grievous:~/django/prueba$ ./manage.py migrate Operations to perform: Synchronize unmigrated apps: staticfiles, material, messages, material_admin Apply all migrations: admin, contenttypes, auth, sessions Synchronizing apps without migrations: Creating tables... Running deferred SQL... Installing custom SQL... Running migrations: Rendering model states... DONE Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying sessions.0001_initial... OK

Se crea el usuario administrador del proyecto:
./manage.py createsuperuser Username (leave blank to use 'ecrespo'): ernesto Email address: ecrespo@ Password: Password (again): Superuser created successfully.

Se ejecuta el servidor web de django:

ecrespo@grievous:~/django/prueba$ ./manage.py runserver 
Performing system checks...

System check identified no issues (0 silenced).
April 26, 2015 - 16:22:53
Django version 1.8, using settings 'prueba.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Se muestra la imagen del inicio de sesión del admin de Django:



Se muestra la imagen del admin luego de iniciar sesión:

La siguiente imagen muestra la sección de usuarios del admin de Django:



En siguiente artículo se explicará como darle el estilo material design a los formularios de una aplicación. 


7 abr. 2015

API rest Full para Python con Eve (parte 1).

Eve es un framework API rest diseñado "para humanos", en enlace para ver el proyecto es el siguiente.

Soporta mongodb y backends de SQL. Sus características las pueden revisar acá.

Este artículo se basa en el quickstart de la aplicación.

Para instalar a Eve se usa el comando pip o easy_install:

#pip install Eve

ó
#easy_install Eve

Luego se creará un archivo con nombre run.py. Su código es el siguiente:
#Se importa eve de Eve
from eve import Eve

#Se crea la instancia de Eve
app = Eve()

#Se ejecuta run.
if __name__ == '__main__':
        app.run()


Ahora se crea un archivo settings.py con el siguiente contenido:
DOMAIN = {'persona': {}}

Los dos archivos deben estar guardados en el mismo directorio.

Ahora se ejecuta run.py:
ernesto@grievous:~/bin/apirest$ python run.py
 * Running on http://127.0.0.1:5000/

Ahora se consulta el API con curl:
ernesto@grievous:~$ curl -i http://127.0.0.1:5000
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 64
Server: Eve/0.5.3 Werkzeug/0.9.6 Python/2.7.8
Date: Wed, 08 Apr 2015 00:09:14 GMT

{"_links": {"child": [{"href": "persona", "title": "persona"}]}}


Ahora se consulta a persona:
ernesto@grievous:~$ curl http://127.0.0.1:5000/persona
{"_items": [], "_links": {"self": {"href": "persona", "title": "persona"}, "parent": {"href": "/", "title": "home"}}, "_meta": {"max_results": 25, "total": 0, "page": 1}}

Lo que muestra la ejecución de run.py es lo siguiente:
ernesto@grievous:~/bin/apirest$ python run.py 
 * Running on http://127.0.0.1:5000/
127.0.0.1 - - [07/Apr/2015 19:39:14] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [07/Apr/2015 19:41:35] "GET /persona HTTP/1.1" 200 -

Se muestra las 2 peticiones en el log.

En próximo artículo se explicará el uso de Eve con mongodb.



AddThis