SlideShare una empresa de Scribd logo
el framework para perfeccionistas
                  con tiempos límite




    Presentación original de Julio Acuña modificada por Adolfo Fitoria
    Aportes de Byron Corrales.
¿chango?
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
¿Otro framework más?
●   Otras tecnologías   ●   Python
    –   PHP                 –   Zope
    –   JSP                 –   TurboGears
    –   ASP                 –   Pylons
    –   Rails               –   CherryPy
                            –   Quixote
                            –   web.py
                            –   etc.
¿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
Django
Django
Componentes de Django
●   ORM
●   URL Dispatcher
●   cache
●   syndication
●   session
●   auth/auth
●   internationalization
●   flatpages, redirects, csrf, comments
Django
¿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
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
Empieza la magia

django-admin.py startproject demo
Django
Estructura

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

DATABASE_ENGINE = 'sqlite3'
DATABASE_NAME = 'demo.sqlite3'
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE_HOST = ''
DATABASE_PORT = ''
settings.py
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',
    'demo.blog',
)
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 = models.SlugField(unique=True)
   date=models.DateTimeField('published on')
   body = models.TextField('Body', blank=True)

  def __str__(self):
    return self.title
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 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
)
;
Django
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})
¿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
¡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 = 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')),
)
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)
Django
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>
Django
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 %}
Django
Django
Django
Django
Django
Django
Django
Django
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
Preguntas??




http://djangopeople.net/fitoria/
      adolfo@fitoria.net
Gracias

Más contenido relacionado

La actualidad más candente

Introducción a Python / Django
Introducción a Python / DjangoIntroducción a Python / Django
Introducción a Python / Django
betabeers
 
Ansible DevOps Day Peru 2016
Ansible DevOps Day Peru 2016Ansible DevOps Day Peru 2016
Ansible DevOps Day Peru 2016
Raul Hugo
 
Drupal console
Drupal consoleDrupal console
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con Python
Manuel Pérez
 
Reactividad en Angular, React y VueJS
Reactividad en Angular, React y VueJSReactividad en Angular, React y VueJS
Reactividad en Angular, React y VueJS
Javier Abadía
 
9.laravel
9.laravel9.laravel
00 introducción a Python
00 introducción a Python00 introducción a Python
00 introducción a Python
Juan Rodríguez
 
Jano Gonzalez - jruby
Jano Gonzalez - jrubyJano Gonzalez - jruby
Jano Gonzalez - jruby
StarTech Conference
 
JRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterprise
Jano González
 
Presentación appy/pod
Presentación appy/podPresentación appy/pod
Presentación appy/pod
Juan Rodríguez
 
Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible
Moisés Maciá
 
Node js Alt.net Hispano
Node js Alt.net HispanoNode js Alt.net Hispano
Node js Alt.net Hispano
hdgarcia
 
Introducción a Ansible
Introducción a AnsibleIntroducción a Ansible
Introducción a Ansible
Dani Rodríguez
 
Mobile Day - Kotlin
Mobile Day - KotlinMobile Day - Kotlin
Mobile Day - Kotlin
Software Guru
 
Usando Django con Docker
Usando Django con DockerUsando Django con Docker
Usando Django con Docker
Ernesto Crespo
 
Gulp js php sevilla 28 septiembre 2016
Gulp js   php sevilla 28 septiembre 2016Gulp js   php sevilla 28 septiembre 2016
Gulp js php sevilla 28 septiembre 2016
Agencia INNN
 
Deployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevillaDeployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevilla
Agencia INNN
 
Provisión Automática de máquinas con Ansible
Provisión Automática de máquinas con AnsibleProvisión Automática de máquinas con Ansible
Provisión Automática de máquinas con Ansible
Carlos Gimeno Yáñez
 

La actualidad más candente (18)

Introducción a Python / Django
Introducción a Python / DjangoIntroducción a Python / Django
Introducción a Python / Django
 
Ansible DevOps Day Peru 2016
Ansible DevOps Day Peru 2016Ansible DevOps Day Peru 2016
Ansible DevOps Day Peru 2016
 
Drupal console
Drupal consoleDrupal console
Drupal console
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con Python
 
Reactividad en Angular, React y VueJS
Reactividad en Angular, React y VueJSReactividad en Angular, React y VueJS
Reactividad en Angular, React y VueJS
 
9.laravel
9.laravel9.laravel
9.laravel
 
00 introducción a Python
00 introducción a Python00 introducción a Python
00 introducción a Python
 
Jano Gonzalez - jruby
Jano Gonzalez - jrubyJano Gonzalez - jruby
Jano Gonzalez - jruby
 
JRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterprise
 
Presentación appy/pod
Presentación appy/podPresentación appy/pod
Presentación appy/pod
 
Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible Gestionando tu infraestructura con Ansible
Gestionando tu infraestructura con Ansible
 
Node js Alt.net Hispano
Node js Alt.net HispanoNode js Alt.net Hispano
Node js Alt.net Hispano
 
Introducción a Ansible
Introducción a AnsibleIntroducción a Ansible
Introducción a Ansible
 
Mobile Day - Kotlin
Mobile Day - KotlinMobile Day - Kotlin
Mobile Day - Kotlin
 
Usando Django con Docker
Usando Django con DockerUsando Django con Docker
Usando Django con Docker
 
Gulp js php sevilla 28 septiembre 2016
Gulp js   php sevilla 28 septiembre 2016Gulp js   php sevilla 28 septiembre 2016
Gulp js php sevilla 28 septiembre 2016
 
Deployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevillaDeployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevilla
 
Provisión Automática de máquinas con Ansible
Provisión Automática de máquinas con AnsibleProvisión Automática de máquinas con Ansible
Provisión Automática de máquinas con Ansible
 

Similar a Django

Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
Paradigma Digital
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
menttes
 
Django
DjangoDjango
Django
ykro
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
PHP Vigo
 
Taller de Django betabeers
Taller de Django betabeersTaller de Django betabeers
Taller de Django betabeers
betabeers
 
Python para desarrolladores web
Python para desarrolladores webPython para desarrolladores web
Python para desarrolladores web
Jose Manuel Ortega Candel
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
jcarazo
 
Web Mapping con Django
Web Mapping con DjangoWeb Mapping con Django
Web Mapping con Django
Carlos Gustavo Ruiz
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
Joaquim Rocha
 
Django
DjangoDjango
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
Andy Dawson
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008
Raul Espinola
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008
guest02b440
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
betabeers
 
La web como Plataforma con Dojo Toolkit
La web como Plataforma con Dojo ToolkitLa web como Plataforma con Dojo Toolkit
La web como Plataforma con Dojo Toolkit
Alex Fuentes
 
Turbogears
TurbogearsTurbogears
Turbogears
Fher Lopez
 
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
nacho mascort
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
Alberto Diaz Martin
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
Alberto Diaz Martin
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y Go
JM Robles
 

Similar a Django (20)

Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
 
Django
DjangoDjango
Django
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
 
Taller de Django betabeers
Taller de Django betabeersTaller de Django betabeers
Taller de Django betabeers
 
Python para desarrolladores web
Python para desarrolladores webPython para desarrolladores web
Python para desarrolladores web
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
 
Web Mapping con Django
Web Mapping con DjangoWeb Mapping con Django
Web Mapping con Django
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
Django
DjangoDjango
Django
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
La web como Plataforma con Dojo Toolkit
La web como Plataforma con Dojo ToolkitLa web como Plataforma con Dojo Toolkit
La web como Plataforma con Dojo Toolkit
 
Turbogears
TurbogearsTurbogears
Turbogears
 
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y Go
 

Django