Your SlideShare is downloading. ×

Django

25,377

Published on

About Django

About Django

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
25,377
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
164
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. ¿chango?
  • 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. ¿Otro framework más? ● Otras tecnologías ● Python – PHP – Zope – JSP – TurboGears – ASP – Pylons – Rails – CherryPy – Quixote – web.py – etc.
  • 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. Componentes de Django ● ORM ● URL Dispatcher ● cache ● syndication ● session ● auth/auth ● internationalization ● flatpages, redirects, csrf, comments
  • 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. 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. Empieza la magia django-admin.py startproject demo
  • 10. Estructura __init__.py manage.py settings.py url.py
  • 11. settings.py DATABASE_ENGINE = 'sqlite3' DATABASE_NAME = 'demo.sqlite3' DATABASE_USER = '' DATABASE_PASSWORD = '' DATABASE_HOST = '' DATABASE_PORT = ''
  • 12. settings.py INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', 'demo.blog', )
  • 13. La magia continúa django-admin.py startapp blog
  • 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. La magia continúa python manage.py syncdb
  • 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. 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. ¿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. ¡Es horríble!
  • 20. Mucho mejor http://www.misitio.com/blog/
  • 21. blog/urls.py from django.conf.urls.defaults import * urlpatterns = patterns('', (r'^$', 'blog.views.front'), )
  • 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. 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. 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. 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. 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. Preguntas?? http://djangopeople.net/fitoria/ adolfo@fitoria.net
  • 28. Gracias

×