el framework para perfeccionistas
                  con tiempos límite




    Presentación original de Julio Acuña modifi...
¿chango?
Conociendo Django
●   Se originó en un ambiente periodístico
    –   Los desarrolladores deben ir al mismo ritmo
        q...
¿Otro framework más?
●   Otras tecnologías   ●   Python
    –   PHP                 –   Zope
    –   JSP                 –...
¿Por qué Django es tan bueno?
●   Usa Python ;)
●   Desarrollo rápido y limpio
●   WSGI
●   Usa el modelo MVC ¿o será MTV?...
Componentes de Django
●   ORM
●   URL Dispatcher
●   cache
●   syndication
●   session
●   auth/auth
●   internationalizat...
¿Qué necesitamos?
●   Python 2.3 en adelante (rama estable)
●   algún manejador de bases de datos
    (PostgreSQL, MySQL, ...
Descargar Django
1. Descargar paquete Django-1.1.tar.gz.
  http://www.djangoproject.com/download/
2. Descargar desde el ma...
Empieza la magia

django-admin.py startproject demo
Estructura

 __init__.py
 manage.py
 settings.py
   url.py
settings.py

DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = 'demo.sqlite3'
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE...
settings.py
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions'...
La magia continúa


django-admin.py startapp blog
models.py
from django.db import models

class Post(models.Model):
   title=models.CharField(max_length=50)
   slug = model...
La magia continúa


python manage.py syncdb
El Equivalente SQLite

CREATE TABLE "blog__categoria" (
   "id" integer NOT NULL PRIMARY KEY,
   "nombre" varchar(50) NOT ...
views.py
from django.shortcuts import render_to_response
from models import Post


def index(request):
  entries = Post.ob...
¿Qué es eso?

http://www.drugemporium.com/cstage?
eccookie=@eccookie@&ecaction=de_ecwalkin
&template=de_walkin.en.htm

htt...
¡Es horríble!
Mucho mejor




http://www.misitio.com/blog/
blog/urls.py
from django.conf.urls.defaults import *


urlpatterns = patterns('',
               (r'^$', 'blog.views.front...
urls.py
from django.conf.urls.defaults import *
from django.contrib import admin
admin.autodiscover()
urlpatterns = patter...
admin.py
from django.contrib import admin
from models import Post


class PostAdmin(admin.ModelAdmin):
  fields = ('title'...
base.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
  Transitional//EN" "http://www.w3.org/TR/2002/REC-
  xhtml1-200208...
blog.html
●   {% extends "base.html" %}
●   {% block content %}
●   {% for entry in entries %}
●   <h2>{{entry.title}}</h2...
Recursos
●   http://djangoproject.com
●   http://djangobook.org
●   http://djangosearch.com
●   http://djangosites.org
●  ...
Preguntas??




http://djangopeople.net/fitoria/
      adolfo@fitoria.net
Gracias
Django
Django
Django
Django
Django
Django
Django
Django
Django
Django
Django
Django
Django
Django
Django
Upcoming SlideShare
Loading in...5
×

Django

25,436

Published on

About Django

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

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

No notes for slide

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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×