abierto y multiplataforma No necesitamos compilar nuestros programas Se puede descargar desde python.org Mac OS X y Linux suelen venir con Python preinstalado Para utilizar el intérprete escribimos python en la consola y aparecerá un promt así >>> para introducir comandos Los archivos de código python tienen extensión .py • • • ^ • • • 02
Al ejecutar un script se traduce a un código máquina intermedio generando archivos .pyc ó .pyo Python es fuertemente tipado pero tiene tipos dinámicos: Una variable puede cambiar de tipo en ejecución pero el tipo se tiene en cuenta para las operaciones No hace falta declarar variables, es automático al utilizarlas • • • • 03
patrón Model Template View Mapea objetos Python con la base de datos (ORM) Permite diseñar URLs amigables para buscadores (útil para SEO) Sistema de plantillas sencillo para diseñadores Genera una interfaz de administración automática Puede gestionar formularios, sesiones de usuario, autenticación, caché, almacenamiento, sitemaps, internacionalización, etc. • • • • • • 14
control: Model → modelo de datos (models.py) View →vistas de datos (views.py): qué datos se presentan Template → plantillas de páginas (generalmente archivos HTML): cómo se presentan los datos • • • 15
Un proyecto consta de una o varias aplicaciones Cada aplicación hace algo en concreto Proyecto "Comunidad web" Aplicaciones: blog, foro, registro de usuarios, tienda on-line, newsletter, agregador de feeds... Una aplicación puede ser utilizada por distintos proyectos a la vez Un proyecto puede hacer funcionar varios sitios web • • • • • • 16
sea interpretado como un paquete de Python settings.py contiene la configuración de la aplicación (conex. a bases de datos, aplicaciones instaladas, etc.) manage.py nos permite ejecutar comandos de django sobre el proyecto (p ej. para crear nuevas aplicaciones) urls.py contiene las URLs del proyecto • • • • 21
datos views.py contiene las vistas de la aplicación tests.py permite que incluyamos tests para la aplicación Es usual añadir un urls.py con las URLs de nuestra aplicación e importarlas en el urls.py del proyecto • • • • • 23
la estructura de la base de datos a partir de nuestros modelos: python manage.py syncdb Django soporta por defecto MySQL, PostgreSQL, SQLite3, y Oracle. 25
(por GET ó POST) Django busca la primera URL que coincida con la solicitada (urls.py) Se ejecuta la vista (función) a la que apunta esa URL (views.py) En la vista se utilizan los models (modelos de datos) para consultar la BD Los datos resultantes se introducen en la plantilla (templates) Se devuleve una respuesta HTTP con el HTML generado 1. 2. 3. 4. 5. 6. 29
busca una coincidencia en urls.py ^autor/(?P<id>\d+)/$ coincide con /autor/33/ Se ejecuta la vista a la que apunta esa URL: autor_detail(id=33) En la vista se consulta a la BD para obtener el Autor con id 33 La vista pasa el objeto Autor devuelto a la plantilla autor.html Django procesa la plantilla y devuleve el HTML generado al navegador 1. 2. 3. 4. 5. 6. 30
consultar la base de datos de forma sencilla a través de nuestros modelos en Python Es sencillo y pontente Permite ejecutar código SQL directamente para operaciones especialmente complejas Django permite utilizar otro ORM distinto como SQLAlchemy • • • • • 32
ordenados A-Z autor = Autor.objects.get(nombre='Cervantes') libros = autor.libros.order_by('titulo') # eliminar el autor autor.delete() 01. 02. 03. 04. 05. 06. 35
saben programar Las plantillas pueden heredar unas de otras Se definen bloques (blocks) que pueden rellenar las plantillas hijas {{ variable }} {% if ... %} {% else %} {% endif %} {% for ... in ... %} {% empty %} {% enfor %} • • • • • • 37
similar a los models Formularios generados dinámicamente a partir de nuestros modelos Django realiza la validación en función del tipo de dato Protección contra CSRF automática (Cross-site request forgery) Se pueden crear form wizards, formularios por pasos Se utilizan widgets para representar los campos: input, textarea, etc. o widgets complejos con HTML y javascript • • • • • • • 43
etc. Autenticación y sesiones de usuario Internacionalización y localización Sistemas de cache (memcached, etc.) Backends de almacenamiento de datos Generación de sitemaps Generación de feeds • • • • • • • 47
docs.djangoproject.com Blog de django.es django.es/blog/ Lista de correo groups.google.com/group/django-users Lista de correo español groups.google.com/group/django-es • ^ • ^ • ^ • ^ • ^ • ^ 49