Successfully reported this slideshow.

More Related Content

Related Audiobooks

Free with a 14 day trial from Scribd

See all

Django

  1. 1. el framework para perfeccionistas con tiempos límite Presentación original de Julio Acuña modificada por Adolfo Fitoria Aportes de Byron Corrales.
  2. 2. ¿chango?
  3. 3. Conociendo Django ● Se originó en un ambiente periodístico – Los desarrolladores deben ir al mismo ritmo que los periodistas ● Código “mantenible” por pocos desarrolladores – Lenguaje dinámico – Código reusable en varios sitios
  4. 4. ¿Otro framework más? ● Otras tecnologías ● Python – PHP – Zope – JSP – TurboGears – ASP – Pylons – Rails – CherryPy – Quixote – web.py – etc.
  5. 5. ¿Por qué Django es tan bueno? ● Usa Python ;) ● Desarrollo rápido y limpio ● WSGI ● Usa el modelo MVC ¿o será MTV? ● Se basa en el principio DRY ● No escribes SQL a menos que sea absolutamente necesario ● Excelente desempeño
  6. 6. Componentes de Django ● ORM ● URL Dispatcher ● cache ● syndication ● session ● auth/auth ● internationalization ● flatpages, redirects, csrf, comments
  7. 7. ¿Qué necesitamos? ● Python 2.3 en adelante (rama estable) ● algún manejador de bases de datos (PostgreSQL, MySQL, sqlite3, Oracle) ● el respectivo adaptador para la base de datos ● servidor web con soporte para Python (apache2, cherokee, lighttpd ) ● y por supuesto Django
  8. 8. Descargar Django 1. Descargar paquete Django-1.1.tar.gz. http://www.djangoproject.com/download/ 2. Descargar desde el manejador de paquete de tu distribución linux # sudo apt-get install python-django 3. Descargar django desde el trunk svn co http://code.djangoproject.com/svn/django/trunk/ django_src INSTALEMOS DJANGO # sudo python setup.py install
  9. 9. Empieza la magia django-admin.py startproject demo
  10. 10. Estructura __init__.py manage.py settings.py url.py
  11. 11. settings.py DATABASE_ENGINE = 'sqlite3' DATABASE_NAME = 'demo.sqlite3' DATABASE_USER = '' DATABASE_PASSWORD = '' DATABASE_HOST = '' DATABASE_PORT = ''
  12. 12. settings.py INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', 'demo.blog', )
  13. 13. La magia continúa django-admin.py startapp blog
  14. 14. models.py from django.db import models class Post(models.Model): title=models.CharField(max_length=50) slug = models.SlugField(unique=True) date=models.DateTimeField('published on') body = models.TextField('Body', blank=True) def __str__(self): return self.title
  15. 15. La magia continúa python manage.py syncdb
  16. 16. El Equivalente SQLite CREATE TABLE "blog__categoria" ( "id" integer NOT NULL PRIMARY KEY, "nombre" varchar(50) NOT NULL ) ; CREATE TABLE "blog__entrada" ( "id" integer NOT NULL PRIMARY KEY, "titulo" varchar(50) NOT NULL, "fecha" datetime NOT NULL, "categoria_id" integer NOT NULL REFERENCES "blog__categoria" ("id"), "contenido" text NOT NULL ) ;
  17. 17. views.py from django.shortcuts import render_to_response from models import Post def index(request): entries = Post.objects.all() return render_to_response("blog/index.html", {"entries": entries})
  18. 18. ¿Qué es eso? http://www.drugemporium.com/cstage? eccookie=@eccookie@&ecaction=de_ecwalkin &template=de_walkin.en.htm http://www.amazon.com/Iron-Maiden-Flight-666- Deluxe/dp/B001W63DX2/ref=sr_1_1?ie=UTF8&s= music&qid=1243516729&sr=8-1
  19. 19. ¡Es horríble!
  20. 20. Mucho mejor http://www.misitio.com/blog/
  21. 21. blog/urls.py from django.conf.urls.defaults import * urlpatterns = patterns('', (r'^$', 'blog.views.front'), )
  22. 22. urls.py from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Example: # (r'^mysite/', include('mysite.foo.urls')), # Uncomment this for admin: (r'^admin/', include('django.contrib.admin.urls')), (r'^blog/', include('demo.blog.urls')), )
  23. 23. admin.py from django.contrib import admin from models import Post class PostAdmin(admin.ModelAdmin): fields = ('title', 'slug', 'date', 'body') prepopulated_fields = {"slug": ("title",)} admin.site.register(Post, PostAdmin)
  24. 24. base.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/2002/REC- xhtml1-20020801/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head><title></title></head> <body> <div id='content'> {% block content %} {% endblock %} </div> </body> </html>
  25. 25. blog.html ● {% extends "base.html" %} ● {% block content %} ● {% for entry in entries %} ● <h2>{{entry.title}}</h2> ● <h3>{{entry.date|date:"j/n/Y H:i"}}</h3> ● {{entry.body}} ● {% endfor %} ● {% endblock %}
  26. 26. Recursos ● http://djangoproject.com ● http://djangobook.org ● http://djangosearch.com ● http://djangosites.org ● http://djangogigs.com ● http://djangosnippets.org ● http://django.es ● http://djangopeople.net
  27. 27. Preguntas?? http://djangopeople.net/fitoria/ adolfo@fitoria.net
  28. 28. Gracias

×