SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
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

Contenu connexe

En vedette

Hands On The New Hildon
Hands On The New HildonHands On The New Hildon
Hands On The New HildonJoaquim Rocha
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to DjangoJoaquim Rocha
 
Seriesfinale, a TV shows' tracker for Maemo 5
Seriesfinale, a TV shows' tracker for Maemo 5Seriesfinale, a TV shows' tracker for Maemo 5
Seriesfinale, a TV shows' tracker for Maemo 5Joaquim Rocha
 
Adapting GNOME Applications to Maemo Fremantle
Adapting GNOME Applications to Maemo FremantleAdapting GNOME Applications to Maemo Fremantle
Adapting GNOME Applications to Maemo FremantleJoaquim Rocha
 

En vedette (6)

Hands On The New Hildon
Hands On The New HildonHands On The New Hildon
Hands On The New Hildon
 
Django introduction
Django introductionDjango introduction
Django introduction
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
 
Seriesfinale, a TV shows' tracker for Maemo 5
Seriesfinale, a TV shows' tracker for Maemo 5Seriesfinale, a TV shows' tracker for Maemo 5
Seriesfinale, a TV shows' tracker for Maemo 5
 
Python introduction
Python introductionPython introduction
Python introduction
 
Adapting GNOME Applications to Maemo Fremantle
Adapting GNOME Applications to Maemo FremantleAdapting GNOME Applications to Maemo Fremantle
Adapting GNOME Applications to Maemo Fremantle
 

Similaire à Introducción a Django

San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008guest02b440
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSIan Monge Pérez
 
Seminario jquery, html5 y wicket
Seminario jquery, html5 y wicketSeminario jquery, html5 y wicket
Seminario jquery, html5 y wicketAdrià Solé Orrit
 
Django
DjangoDjango
Djangoykro
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPHP Vigo
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2Mario IC
 
Taller de introducción al desarrollo web con Django
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 DjangoJuan Rodríguez
 
Taller de Django betabeers
Taller de Django betabeersTaller de Django betabeers
Taller de Django betabeersbetabeers
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigMarcos Labad
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios webjcarazo
 

Similaire à Introducción a Django (20)

Introducción a DJango
Introducción a DJangoIntroducción a DJango
Introducción a DJango
 
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
 
Django
DjangoDjango
Django
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Presentacion YII
Presentacion YIIPresentacion YII
Presentacion YII
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JS
 
Seminario jquery, html5 y wicket
Seminario jquery, html5 y wicketSeminario jquery, html5 y wicket
Seminario jquery, html5 y wicket
 
Guia jQuery INCES Militar - Kurt Gude
Guia jQuery INCES Militar - Kurt GudeGuia jQuery INCES Militar - Kurt Gude
Guia jQuery INCES Militar - Kurt Gude
 
Frameworks de templates y xml
Frameworks de templates y xmlFrameworks de templates y xml
Frameworks de templates y xml
 
Django
DjangoDjango
Django
 
Curso de HTML5
Curso de HTML5Curso de HTML5
Curso de HTML5
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Taller de introducción al desarrollo web con Django
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
 
Taller de Django betabeers
Taller de Django betabeersTaller de Django betabeers
Taller de Django betabeers
 
Tutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. TwigTutorial3 Desymfony - La Vista. Twig
Tutorial3 Desymfony - La Vista. Twig
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
 
Django
DjangoDjango
Django
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 

Dernier

Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 

Dernier (20)

Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 

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