SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
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
Componentes de Django
●   ORM
●   URL Dispatcher
●   cache
●   syndication
●   session
●   auth/auth
●   internationalization
●   flatpages, redirects, csrf, comments
¿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
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
)
;
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)
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>
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 %}
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 / Djangobetabeers
 
Ansible DevOps Day Peru 2016
Ansible DevOps Day Peru 2016Ansible DevOps Day Peru 2016
Ansible DevOps Day Peru 2016Raul Hugo
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con PythonManuel Pérez
 
Reactividad en Angular, React y VueJS
Reactividad en Angular, React y VueJSReactividad en Angular, React y VueJS
Reactividad en Angular, React y VueJSJavier Abadía
 
00 introducción a Python
00 introducción a Python00 introducción a Python
00 introducción a PythonJuan Rodríguez
 
JRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJano González
 
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 Hispanohdgarcia
 
Usando Django con Docker
Usando Django con DockerUsando Django con Docker
Usando Django con DockerErnesto 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 2016Agencia INNN
 
Deployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevillaDeployer PHP. Presentación para #PHPSevilla
Deployer PHP. Presentación para #PHPSevillaAgencia 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 AnsibleCarlos 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

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 frontendmenttes
 
Django
DjangoDjango
Djangoykro
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPHP Vigo
 
Taller de Django betabeers
Taller de Django betabeersTaller de Django betabeers
Taller de Django betabeersbetabeers
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios webjcarazo
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a DjangoJoaquim Rocha
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008guest02b440
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephpbetabeers
 
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 ToolkitAlex Fuentes
 
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 #seoplus2018nacho 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.netAlberto 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.NETAlberto Diaz Martin
 
APIs REST: Django y Go
APIs REST: Django y GoAPIs REST: Django y Go
APIs REST: Django y GoJM 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