Introducción a Django

J
Introducción a Django



Universidade de A Coruña, 21 noviembre 2011
      Joaquim Rocha <jrocha@igalia.com>
         http://www.joaquimrocha.com
¿Qué es?
"Django is a highlevel Python Web framework
that encourages rapid development and
clean, pragmatic design."



(de la página oficial de Django)
¿Qué es?
Proyecto interno de Lawrence Journal-World en 2003

Debería ayudar a los periodistas con sus plazos cortos

No debería molestar a los periodistas

LLeva el nombre del guitarrista Django Reinhardt
El framework
Object-Relational Mapper (ORM)

Interfaz de Admin automática

Diseño de URLs elegante

Poderoso sistema de plantillas

i18n
Gran comunidad
Django tiene una gran comunidad y una extensa lista
de apps Django

Buscalas en http://code.google.com,
http://github.com o http://djangopackages.com

Otras páginas web interesantes:

Django Sites: http://www.djangosites.org
Django People: http://www.djangopeople.org
Django Community:https://www.djangoproject.com/community
Poner proyectos en producción
mod_wsgi
FastCGI
mod_python
...
Backend de BD
Soportados oficialmente:

PostreSQL
MySQL
SQLite
Oracle
Usando a Django
Instalación
Tan simple como bajar el archivo o clonar el repositorio:
http://djangoproject.com/download

Después:
# python setup.py install

O entonces:
# easy_install install
Desarrollo
Creación de un proyecto
$ django-admin.py startproject Project

Project/
 __init__.py
 manage.py
 settings.py
 urls.py
Executar de un proyecto
$ ./manage.py runserver

... y abre en tu navegador: localhost:8000
Desarrollo
Los proyectos de Django tienen aplicacions (Apps)

Las Apps son los componentes de los proyectos
Creación de una aplicación
$ ./manage.py startapp my_app

my_app/
 __init__.py
 models.py
 tests.py
 views.py
Construir la base de datos
$ ./manage.py syncdb
Configuración de un proyecto
Configuración sencilla en el archivo settings.py
Desarrollo
Django sigue el patrón de diseño MTV

Model-Template-View
Modelos
Los modelos son classes que representan objetos
en la base de datos

¡Y no tendrás que tocar en SQL jamás!
Modelos

class Post(models.Model):

    title = models.CharField(max_length = 500)
    content = models.TextField()
    date = models.DateTimeField(auto_now = True)
    ...
Vistas
Las vistas son funciones que normalmente
procesan modelos e renderizan HTML

¡Es donde pasa la magia!

¿Cómo obtener todos los posts desde hace 5 días y ordenarlos
por fecha descendente?
Vistas

import datetime

def view_latest_posts(request):
    # Last 5 days
    date = datetime.datetime.now() - datetime.timedelta(5)
    posts = Post.objects.filter(date__gte = date).order_by('-date')
    return render_to_response('posts/show_posts.html',
                              {'posts': posts})
Vistas Genericas
Son vistas todavía más rápidas de usar, para
tareas comunes como listar o enseñar objetos.


from django.views.generic import DetailView, ListView

urlpatterns = patterns('Project.posts.views',
 (r'^view/(?P<pk>d+)/$', DetailView.as_view(model=Post)),
 (r'^posts/$', ListView.as_view(model=Post)),


Intentan usar los siguientes archivos por defecto:
post_detail.html y post_list.html
Templates
¡Prevendrán que te repitas!

Y los designers no tendrán que tocar el código.
<html>
    <head>
        <title>{% block title %}{% endblock %}</title>
    </head>
    <body>
        {% block content %}{% endblock %}
    </body>
</html>
{% extends "base.html" %}
{% block title %}Homepage{% endblock %}
{% block content %}
    <h3>This will be some main content</h3>
    {% for post in posts %}
        <h4>{{ post.title }} on {{ post.date|date:"B d, Y"|upper }}<h4>
        <p>{{ post.content }}</p>
    {% endfor %}
    {% url project.some_app.views.some_view some arguments %}
{% endblock %}
URLs
En Django, los URLs ¡son parte del diseño!

urls.py usa expresiones regulares para mapear URLs con vistas
URLs

urlpatterns = patterns('Project.some_app.views',
  (r'^$', 'index'),
  (r'^posts/(?P<r_id>d+)/$', 'view_latest_posts'),
  (r'^create/$', 'create'), url(r'^view/post/(?P<p_id>d+)/$',
                                'view', name = 'view_post'),
)
Formularios
Son clases que representan un formulario HTML

Dejan que se pueda facilmente configurar los
tipos esperados de inputs, mensages de error,
etiquetas, etc.
Formularios

class CreatePost(forms.Form):
    title = forms.CharField(label = "Post Title",
    max_length = 500,
    widget = forms.TextInput(attrs={
                              'class': 'big_entry'
                              }))
    content = forms.CharField()
    tags = forms.CharField(required = False)
Formularios

def create_post(request):
    if request.method == 'POST':
        form = CreatePost(request.POST)
    if form.is_valid():
        # Create a new post object with data
        # from form.cleaned_data
        return HttpResponseRedirect('/index/')
    else:
        form = CreatePost()
        return render_to_response('create.html', {
                                  'form': form,
                                  })
Formularios

<form action="/create/" method="POST">
    {{ form.as_p }}
    <input type="submit" value="Create"/>
</form>
Formularios para models
Son formularios que se crean automaticamente a
partir de modelos, con tan solo:


from django.forms import ModelForm
class PostForm(models.ModelForm):
    class Meta:
        model = Post
Proximos pasos
Hosts para Django
Una extensa lista se encuentra en.
http://code.djangoproject.com/wiki/DjangoFriendlyWebHosts

Los populares:
http://www.statopia.com/corporate/blog/2007/aug/05/
PopularDjangoHostingService/

El Google AppEngine también lo pone facil para Django:
http://appengine.google.com/
Ayuda
Documentación Django:
https://docs.djangoproject.com

Cheat sheet:
http://www.revsys.com/django/cheatsheet/

Algunos libros:
The Django Book: http://www.djangobook.com/
Learning Website Development with Django, Packt
Practical Django Projects, Apress
Pro Django, Apress
1 of 35

Recommended

Ocrfeeder by
OcrfeederOcrfeeder
OcrfeederJoaquim Rocha
930 views36 slides
(Muy breve) Introduccion a jQuery by
(Muy breve) Introduccion a jQuery(Muy breve) Introduccion a jQuery
(Muy breve) Introduccion a jQueryVíctor Manuel Rivas Santos
2.2K views21 slides
JQuery-Tema 1 by
JQuery-Tema 1JQuery-Tema 1
JQuery-Tema 1Renny Batista
1.1K views26 slides
La magia de jquery by
La magia de jqueryLa magia de jquery
La magia de jqueryAngelDX
3.5K views111 slides
Introduccion a Jquery by
Introduccion a JqueryIntroduccion a Jquery
Introduccion a JqueryIgnacio Tolstoy
1.6K views23 slides
Haciendo Patria con Sinatra by
Haciendo Patria con SinatraHaciendo Patria con Sinatra
Haciendo Patria con Sinatrafebuiles
696 views50 slides

More Related Content

Viewers also liked

Hands On The New Hildon by
Hands On The New HildonHands On The New Hildon
Hands On The New HildonJoaquim Rocha
692 views40 slides
Django introduction by
Django introductionDjango introduction
Django introductionJoaquim Rocha
934 views35 slides
Introduction to Django by
Introduction to DjangoIntroduction to Django
Introduction to DjangoJoaquim Rocha
2.2K views40 slides
Seriesfinale, a TV shows' tracker for Maemo 5 by
Seriesfinale, a TV shows' tracker for Maemo 5Seriesfinale, a TV shows' tracker for Maemo 5
Seriesfinale, a TV shows' tracker for Maemo 5Joaquim Rocha
964 views22 slides
Python introduction by
Python introductionPython introduction
Python introductionJoaquim Rocha
1.4K views53 slides
Adapting GNOME Applications to Maemo Fremantle by
Adapting GNOME Applications to Maemo FremantleAdapting GNOME Applications to Maemo Fremantle
Adapting GNOME Applications to Maemo FremantleJoaquim Rocha
8.4K views36 slides

Viewers also liked(6)

Introduction to Django by Joaquim Rocha
Introduction to DjangoIntroduction to Django
Introduction to Django
Joaquim Rocha2.2K views
Seriesfinale, a TV shows' tracker for Maemo 5 by Joaquim Rocha
Seriesfinale, a TV shows' tracker for Maemo 5Seriesfinale, a TV shows' tracker for Maemo 5
Seriesfinale, a TV shows' tracker for Maemo 5
Joaquim Rocha964 views
Adapting GNOME Applications to Maemo Fremantle by Joaquim Rocha
Adapting GNOME Applications to Maemo FremantleAdapting GNOME Applications to Maemo Fremantle
Adapting GNOME Applications to Maemo Fremantle
Joaquim Rocha8.4K views

Similar to Introducción a Django

Introducción a DJango by
Introducción a DJangoIntroducción a DJango
Introducción a DJangoLuis Cruz Campos
567 views57 slides
San Luis Oct 2008 by
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008Raul Espinola
494 views17 slides
San Luis Oct 2008 by
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008guest02b440
178 views17 slides
Django by
DjangoDjango
DjangoAdolfo Fitoria
9.3K views43 slides
Introducción a Flask by
Introducción a FlaskIntroducción a Flask
Introducción a FlaskLuis Cruz Campos
920 views52 slides
Presentacion YII by
Presentacion YIIPresentacion YII
Presentacion YIILenin Hernandez
2.8K views11 slides

Similar to Introducción a Django(20)

San Luis Oct 2008 by guest02b440
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008
guest02b440178 views
Django by ykro
DjangoDjango
Django
ykro925 views
Primeros pasos Symfony PHPVigo by PHP Vigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
PHP Vigo478 views
Taller introduccion symfony2 by Mario IC
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
Mario IC1K views
Taller de introducción al desarrollo web con Django by Juan Rodríguez
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con Django
Juan Rodríguez5.5K views
Taller de Django betabeers by betabeers
Taller de Django betabeersTaller de Django betabeers
Taller de Django betabeers
betabeers1.1K views
Tutorial3 Desymfony - La Vista. Twig by Marcos Labad
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. Twig
Marcos Labad2.5K views
Django - Plataforma de sitios web by jcarazo
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
jcarazo4K views

Recently uploaded

MVelazco_Internet, Origenes y Evolucion.pptx by
MVelazco_Internet, Origenes  y Evolucion.pptxMVelazco_Internet, Origenes  y Evolucion.pptx
MVelazco_Internet, Origenes y Evolucion.pptxal223915
6 views39 slides
ESTRATEGIAS DE APOYO MARTIN PALACIO TERCER PERIODO by
ESTRATEGIAS DE APOYO MARTIN PALACIO TERCER PERIODOESTRATEGIAS DE APOYO MARTIN PALACIO TERCER PERIODO
ESTRATEGIAS DE APOYO MARTIN PALACIO TERCER PERIODOpalaciomoralesmartin
9 views5 slides
EM.020 INSTALACIONES DE COMUNICACIONES.pdf by
EM.020 INSTALACIONES DE COMUNICACIONES.pdfEM.020 INSTALACIONES DE COMUNICACIONES.pdf
EM.020 INSTALACIONES DE COMUNICACIONES.pdfgilberenriquedavila
7 views4 slides
fundamentos de electricidad electronica by
fundamentos de electricidad electronicafundamentos de electricidad electronica
fundamentos de electricidad electronicaKevin619029
5 views16 slides
El Ciberespacio y sus Características.pptx by
El Ciberespacio y  sus Características.pptxEl Ciberespacio y  sus Características.pptx
El Ciberespacio y sus Características.pptxAnthlingPereira
19 views3 slides
Fundamentos de electricidad y electrónica.docx by
Fundamentos de electricidad y electrónica.docxFundamentos de electricidad y electrónica.docx
Fundamentos de electricidad y electrónica.docxDilanTabares
5 views9 slides

Recently uploaded(20)

MVelazco_Internet, Origenes y Evolucion.pptx by al223915
MVelazco_Internet, Origenes  y Evolucion.pptxMVelazco_Internet, Origenes  y Evolucion.pptx
MVelazco_Internet, Origenes y Evolucion.pptx
al2239156 views
fundamentos de electricidad electronica by Kevin619029
fundamentos de electricidad electronicafundamentos de electricidad electronica
fundamentos de electricidad electronica
Kevin6190295 views
El Ciberespacio y sus Características.pptx by AnthlingPereira
El Ciberespacio y  sus Características.pptxEl Ciberespacio y  sus Características.pptx
El Ciberespacio y sus Características.pptx
AnthlingPereira19 views
Fundamentos de electricidad y electrónica.docx by DilanTabares
Fundamentos de electricidad y electrónica.docxFundamentos de electricidad y electrónica.docx
Fundamentos de electricidad y electrónica.docx
DilanTabares5 views
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptx by dreadlockp5
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptxCÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptx
CÓMO PUBLICAR UNA PRESENTACIÓN GRÁFICA EN INTERNET.pptx
dreadlockp58 views
DELITOS INFORMATICOS EFRAIN CAMACHO 27462611 INFORMATICA III.pptx by davidsalazar63484
DELITOS INFORMATICOS EFRAIN CAMACHO 27462611 INFORMATICA III.pptxDELITOS INFORMATICOS EFRAIN CAMACHO 27462611 INFORMATICA III.pptx
DELITOS INFORMATICOS EFRAIN CAMACHO 27462611 INFORMATICA III.pptx
Tecnologías para la enseñanza virtual by mpachecocodem
Tecnologías para la enseñanza virtual Tecnologías para la enseñanza virtual
Tecnologías para la enseñanza virtual
mpachecocodem9 views
Presentación: El impacto y peligro de la piratería de software by EmanuelMuoz11
Presentación: El impacto y peligro de la piratería de softwarePresentación: El impacto y peligro de la piratería de software
Presentación: El impacto y peligro de la piratería de software
EmanuelMuoz1117 views
actividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docx by MaraJos722801
actividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docxactividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docx
actividadanlisisdeartefactos1-230424222159-fef7d8f3 (1).docx
MaraJos7228015 views
Fundamentos de Electricidad y Electronica 9-3 (1).docx by Samuel709479
Fundamentos de Electricidad y Electronica 9-3 (1).docxFundamentos de Electricidad y Electronica 9-3 (1).docx
Fundamentos de Electricidad y Electronica 9-3 (1).docx
Samuel7094795 views
TALLER DE ANÁLISIS DE ARTEFACTOS_.docx by DilanTabares
TALLER DE ANÁLISIS DE ARTEFACTOS_.docxTALLER DE ANÁLISIS DE ARTEFACTOS_.docx
TALLER DE ANÁLISIS DE ARTEFACTOS_.docx
DilanTabares6 views
Seguridad de los sistemas operativos..pptx by dayanelismarquez
Seguridad de los sistemas operativos..pptxSeguridad de los sistemas operativos..pptx
Seguridad de los sistemas operativos..pptx
dayanelismarquez23 views
Tecnologías para la enseñanza virtual.pptx by exprosaavedra
Tecnologías para la enseñanza virtual.pptxTecnologías para la enseñanza virtual.pptx
Tecnologías para la enseñanza virtual.pptx
exprosaavedra15 views
Examen Configuracion III.pptx by gatb1825
Examen Configuracion III.pptxExamen Configuracion III.pptx
Examen Configuracion III.pptx
gatb18257 views

Introducción a Django

  • 1. Introducción a Django Universidade de A Coruña, 21 noviembre 2011 Joaquim Rocha <jrocha@igalia.com> http://www.joaquimrocha.com
  • 2. ¿Qué es? "Django is a highlevel Python Web framework that encourages rapid development and clean, pragmatic design." (de la página oficial de Django)
  • 3. ¿Qué es? Proyecto interno de Lawrence Journal-World en 2003 Debería ayudar a los periodistas con sus plazos cortos No debería molestar a los periodistas LLeva el nombre del guitarrista Django Reinhardt
  • 4. El framework Object-Relational Mapper (ORM) Interfaz de Admin automática Diseño de URLs elegante Poderoso sistema de plantillas i18n
  • 5. Gran comunidad Django tiene una gran comunidad y una extensa lista de apps Django Buscalas en http://code.google.com, http://github.com o http://djangopackages.com Otras páginas web interesantes: Django Sites: http://www.djangosites.org Django People: http://www.djangopeople.org Django Community:https://www.djangoproject.com/community
  • 6. Poner proyectos en producción mod_wsgi FastCGI mod_python ...
  • 7. Backend de BD Soportados oficialmente: PostreSQL MySQL SQLite Oracle
  • 9. Instalación Tan simple como bajar el archivo o clonar el repositorio: http://djangoproject.com/download Después: # python setup.py install O entonces: # easy_install install
  • 11. Creación de un proyecto $ django-admin.py startproject Project Project/ __init__.py manage.py settings.py urls.py
  • 12. Executar de un proyecto $ ./manage.py runserver ... y abre en tu navegador: localhost:8000
  • 13. Desarrollo Los proyectos de Django tienen aplicacions (Apps) Las Apps son los componentes de los proyectos
  • 14. Creación de una aplicación $ ./manage.py startapp my_app my_app/ __init__.py models.py tests.py views.py
  • 15. Construir la base de datos $ ./manage.py syncdb
  • 16. Configuración de un proyecto Configuración sencilla en el archivo settings.py
  • 17. Desarrollo Django sigue el patrón de diseño MTV Model-Template-View
  • 18. Modelos Los modelos son classes que representan objetos en la base de datos ¡Y no tendrás que tocar en SQL jamás!
  • 19. Modelos class Post(models.Model): title = models.CharField(max_length = 500) content = models.TextField() date = models.DateTimeField(auto_now = True) ...
  • 20. Vistas Las vistas son funciones que normalmente procesan modelos e renderizan HTML ¡Es donde pasa la magia! ¿Cómo obtener todos los posts desde hace 5 días y ordenarlos por fecha descendente?
  • 21. Vistas import datetime def view_latest_posts(request): # Last 5 days date = datetime.datetime.now() - datetime.timedelta(5) posts = Post.objects.filter(date__gte = date).order_by('-date') return render_to_response('posts/show_posts.html', {'posts': posts})
  • 22. Vistas Genericas Son vistas todavía más rápidas de usar, para tareas comunes como listar o enseñar objetos. from django.views.generic import DetailView, ListView urlpatterns = patterns('Project.posts.views', (r'^view/(?P<pk>d+)/$', DetailView.as_view(model=Post)), (r'^posts/$', ListView.as_view(model=Post)), Intentan usar los siguientes archivos por defecto: post_detail.html y post_list.html
  • 23. Templates ¡Prevendrán que te repitas! Y los designers no tendrán que tocar el código.
  • 24. <html> <head> <title>{% block title %}{% endblock %}</title> </head> <body> {% block content %}{% endblock %} </body> </html>
  • 25. {% extends "base.html" %} {% block title %}Homepage{% endblock %} {% block content %} <h3>This will be some main content</h3> {% for post in posts %} <h4>{{ post.title }} on {{ post.date|date:"B d, Y"|upper }}<h4> <p>{{ post.content }}</p> {% endfor %} {% url project.some_app.views.some_view some arguments %} {% endblock %}
  • 26. URLs En Django, los URLs ¡son parte del diseño! urls.py usa expresiones regulares para mapear URLs con vistas
  • 27. URLs urlpatterns = patterns('Project.some_app.views', (r'^$', 'index'), (r'^posts/(?P<r_id>d+)/$', 'view_latest_posts'), (r'^create/$', 'create'), url(r'^view/post/(?P<p_id>d+)/$', 'view', name = 'view_post'), )
  • 28. Formularios Son clases que representan un formulario HTML Dejan que se pueda facilmente configurar los tipos esperados de inputs, mensages de error, etiquetas, etc.
  • 29. Formularios class CreatePost(forms.Form): title = forms.CharField(label = "Post Title", max_length = 500, widget = forms.TextInput(attrs={ 'class': 'big_entry' })) content = forms.CharField() tags = forms.CharField(required = False)
  • 30. Formularios def create_post(request): if request.method == 'POST': form = CreatePost(request.POST) if form.is_valid(): # Create a new post object with data # from form.cleaned_data return HttpResponseRedirect('/index/') else: form = CreatePost() return render_to_response('create.html', { 'form': form, })
  • 31. Formularios <form action="/create/" method="POST"> {{ form.as_p }} <input type="submit" value="Create"/> </form>
  • 32. Formularios para models Son formularios que se crean automaticamente a partir de modelos, con tan solo: from django.forms import ModelForm class PostForm(models.ModelForm): class Meta: model = Post
  • 34. Hosts para Django Una extensa lista se encuentra en. http://code.djangoproject.com/wiki/DjangoFriendlyWebHosts Los populares: http://www.statopia.com/corporate/blog/2007/aug/05/ PopularDjangoHostingService/ El Google AppEngine también lo pone facil para Django: http://appengine.google.com/
  • 35. Ayuda Documentación Django: https://docs.djangoproject.com Cheat sheet: http://www.revsys.com/django/cheatsheet/ Algunos libros: The Django Book: http://www.djangobook.com/ Learning Website Development with Django, Packt Practical Django Projects, Apress Pro Django, Apress