Download Desarrollo de Aplicaciones Web con Django
Document related concepts
no text concepts found
Transcript
Desarrollo de Aplicaciones Web con Django Pablo Suárez Hernández pablo@osl.ull.es Oficina de Software Libre Universidad de La Laguna http://www.osl.ull.es/ Cursos ISLA: Octubre - Noviembre 2009 ¿Qué es Django? Framework basado en Python Desarrollo de aplicaciones web Facilidad y Rapidez Modular (Don't Repeat Yourself) “Django, a web framework for perfectionist with deadlines” Cursos ISLA: Octubre - Noviembre 2009 ¿Qué vamos a hacer? ➢ ➢ 1ª Sesión: ➢ Introducción a Python y Django ➢ Desarrollo sencillo de una aplicación web (Blog) 2ª Sesión: ➢ Django Avanzado (Forms, Templates, ...) ➢ Desarrollo completo de un sistema de multiples blogs. ➢ Django en producción. Cursos ISLA: Octubre - Noviembre 2009 ¿Qué lenguaje de programación? Cursos ISLA: Octubre - Noviembre 2009 Python Guido Van Rossum, 1991 Lenguaje interpretado Paradigma: - Estructural - Orientado a objetos - Práctico y Funcional Legible (indentación obligatoria) Multiplataforma Open Source (PSF) – Compatible con GPL Cursos ISLA: Octubre - Noviembre 2009 Python Pragmatismo vs Fundamentalismo: # Hola mundo en python print “Hola Mundo!” /* Hola Mundo en JAVA */ class HolaMundo { public static void main(String[] args) { System.out.println("Hola Mundo!"); } } Cursos ISLA: Octubre - Noviembre 2009 Python: Ejemplos $ python >>> text = "Curso Django en Cursos ISLA 09" >>> print text Curso Django en Cursos ISLA 09 >>> print text[:12] Curso Django >>> print text[16:] Cursos ISLA 09 >>> print (text[6:12] + " ") * 3 + "!!" Django Django Django !! Cursos ISLA: Octubre - Noviembre 2009 Python: Ejemplos >>> text = "Curso Django en Cursos ISLA 09" >>> if "ISLA" in text: ... print "valido" ... else: ... print "no valido" >>> for i in ["string", 'a', 5.2, False]: ... print i Cursos ISLA: Octubre - Noviembre 2009 Python: Ejemplos >>> dict = { 'clave1' : "mensaje", 'clave2' : "mensaje2" } >>> for i in dict: ... print i ... clave1 clave2 >>> for i in dict: ... print dict[i] ... mensaje mensaje2 Cursos ISLA: Octubre - Noviembre 2009 Python: Ejemplos >>> class A: ... def func_a(self): ... print "A" ... >>> class B(A): ... def func_b(self): ... self.func_a() ... print "B" ... >>> a = A() >>> a.func_a() >>> a = B() >>> a.func_b() Cursos ISLA: Octubre - Noviembre 2009 Python: Ejemplos >>> def factorial(x): ... if x == 0: ... return 1 ... else: ... return x * factorial(x1) ... >>> factorial(10) >>> fact = lambda x:(1 if x == 0 else x * fact(x1)) >>> factorial(10) >>> suma = lambda x, y: (x+y) >>> suma(2,4) Cursos ISLA: Octubre - Noviembre 2009 http://www.djangoproject.com/ Cursos ISLA: Octubre - Noviembre 2009 Django: Historia 2003: Lawrence Journal, Kansas - USA 2005: BSD & v0.90 2006: v0.95 2007: v0.96 2008: Foundation & v1.0 2009: EuroDjangoCon Cursos ISLA: Octubre - Noviembre 2009 Features Servidor HTTP ORM URL dispatcher Lenguaje de Templates Consola Interactiva Documentación Cursos ISLA: Octubre - Noviembre 2009 Features Interface de Administración Forms Middleware & Signals Autenticación y Permisos i18n y L10n Caché Cursos ISLA: Octubre - Noviembre 2009 Arquitectura Implementa una arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. Modelo Vista Template (MVT). Modelos → datos Vistas → lógica Templates → frontend Cursos ISLA: Octubre - Noviembre 2009 Modelos from django.db import models class Poll(models.Model): question = models.CharField(max_length=200) pub_date = models.DateTimeField() class Choice(models.Model): poll = models.ForeignKey(Poll) choice = models.CharField(max_length=200) votes = models.IntegerField() ----------------------------------------------------------------El ORM soporta MySQL, PosgreSQL, Sqlite3, ORACLE. ¡¡¡ NI RASTRO DE SQL !!! Cursos ISLA: Octubre - Noviembre 2009 URLs from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', (r'^polls/$', 'mysite.polls.views.index'), (r'^polls/(?P<poll_id>\d+)/$', 'mysite.polls.views.detail'), (r'^polls/(?P<poll_id>\d+)/results/$', 'mysite.polls.views.results'), (r'^polls/(?P<poll_id>\d+)/vote/$', 'mysite.polls.views.vote'), (r'^admin/', include(admin.site.urls)), ) Cursos ISLA: Octubre - Noviembre 2009 Vistas from django.shortcuts import render_to_response from mysite.polls.models import Poll def index(request): latest_poll_list = Poll.objects.all().order_by('pub_date')[:5] return render_to_response('polls/index.html', {'latest_poll_list': latest_poll_list}) Cursos ISLA: Octubre - Noviembre 2009 Templates <html> <body> {% if latest_poll_list %} <ul> {% for poll in latest_poll_list %} <li>{{ poll.question }}</li> {% endfor %} </ul> {% else %} <p>No polls are available.</p> {% endif %} </body> </html> Cursos ISLA: Octubre - Noviembre 2009 HTTPRequest - HTTPResponse Cursos ISLA: Octubre - Noviembre 2009 Referencias Django Project http://www.djangoproject.com/ Django en español http://django.es/ Python & Django – Marcin Mierzejewski http://www.slideshare.net/ Cursos ISLA: Octubre - Noviembre 2009