Django

43
el framework para perfeccionistas con tiempos límite Presentación original de Julio Acuña modificada por Adolfo Fitoria Aportes de Byron Corrales.

description

About Django

Transcript of Django

Page 1: Django

el framework para perfeccionistas con tiempos límite

Presentación original de Julio Acuña modificada por Adolfo FitoriaAportes de Byron Corrales.

Page 2: Django

¿chango?

Page 3: Django

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

Page 4: Django

¿Otro framework más?

● Otras tecnologías– PHP– JSP– ASP– Rails

● Python– Zope– TurboGears– Pylons– CherryPy– Quixote– web.py– etc.

Page 5: Django

¿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

Page 6: Django
Page 7: Django
Page 8: Django

Componentes de Django● ORM● URL Dispatcher● cache● syndication● session● auth/auth● internationalization● flatpages, redirects, csrf, comments

Page 9: Django
Page 10: 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

Page 11: Django

Descargar DjangoDescargar 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

Page 12: Django

Empieza la magia

django-admin.py startproject demo

Page 13: Django
Page 14: Django

EstructuraEstructura

__init__.py

manage.py

settings.py

url.py

Page 15: Django

settings.py

DATABASE_ENGINE = 'sqlite3'

DATABASE_NAME = 'demo.sqlite3'

DATABASE_USER = ''

DATABASE_PASSWORD = ''

DATABASE_HOST = ''

DATABASE_PORT = ''

Page 16: Django

settings.py

INSTALLED_APPS = (

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.sites',

'django.contrib.admin',

'demo.blog',

)

Page 17: Django

La magia continúa

django-admin.py startapp blog

Page 18: Django

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

Page 19: Django

La magia continúa

python manage.py syncdb

Page 20: Django

El Equivalente SQLiteEl 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);

Page 21: Django
Page 22: 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})

Page 23: Django

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

¿Qué es eso?

Page 24: Django

¡Es horríble!

Page 25: Django

http://www.misitio.com/blog/

Mucho mejor

Page 26: Django

blog/urls.py

from django.conf.urls.defaults import *

urlpatterns = patterns('',

(r'^$', 'blog.views.front'),

)

Page 27: Django

urls.pyfrom 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')),

)

Page 28: Django

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)

Page 29: Django
Page 30: 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>

Page 31: Django
Page 32: 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 %}

Page 33: Django
Page 34: Django
Page 35: Django
Page 36: Django
Page 37: Django
Page 38: Django
Page 39: Django
Page 40: Django
Page 41: 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

Page 42: Django

Preguntas??

http://djangopeople.net/fitoria/

[email protected]

Page 43: Django

Gracias