San Luis Oct 2008
-
Upload
raul-espinola -
Category
Technology
-
view
849 -
download
0
Transcript of San Luis Oct 2008
1. Introduccin a Django Manuel Kaufmann Octubre de 2008 http://www.python.com.ar 2. Introduccin a Django Qu es Django?
- Framework
- Rpido y limpio
- Problemas resueltos
Para qu se utiliza?
- Aplicaciones web
- Blog's
- Sistemas complejos
- Encuesta
Historia
- Necesidad en 2003
- Lawrence Journal-World
- En 2005 es liberado como software libre
3. Introduccin a Django Patrn de diseo MVC
- Separar los componentes de la aplicacin
- Datos
- La interfaz de usuario
- La lgica del sistema
Modelo (models.py)
- Descripcin de las tablas
- Clases de Python
Vista (views.py)
- Lgica para mostrar resultados en pantalla
- Procesar intervencin del usuario
Plantillas (index.html)
- Forma de visualizar los resultados
- Cdigo HTML y Django Template
4. Introduccin a Django Instalacin [ humitos ]$ wget -c http://www.djangoproject.com/download/1.0/tarball/ [ humitos ]$ tar xzvf Django-1.0.tar.gz ...... [ humitos ]$ cd Django-1.0 [ humitos ]$ sudo python setup.py install Prueba [ humitos ]$ python Python 2.5.2 (r252:60911, Aug6 2008, 09:17:29) [GCC 4.3.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import django >>> django.VERSION (1, 0, 'final') >>> 5. Introduccin a Django Comenzar un proyecto It worked!
- http://localhost:8000/
Archivos del proyecto
- __init__.py : indica a Python que este directorio es un paquete
- manage.py : utilidad para interactuar con el proyecto
- settings.py : configuraciones generales para el proyecto
- urls.py : declaraciones de todas las urls del sitio web
[ humitos ]$ django-admin.py startproject blog [ humitos ]$ ls blog/ __init__.pymanage.pysettings.pyurls.py [ humitos ]$ python manage.py runserver 6. Introduccin a Django Mapear URL's
- Funcionesvista
- Mediante expresiones regulares
- Varias urls, misma vista
Expresiones regulares
- No por estructura de directorios, ni nombre de clases
- Control absoluto
- Grupos en las regex (nombrados o no)
Funcin para la url
- Strings, 'blog.posts.views.my_view'
- Objeto funcin importado/definido previamente
- La funcin debe devolver un HttpResponse
7. Introduccin a Django Qu es una aplicacin?
- Conjunto de archivos de cdigo fuente Python
- Incluye sus modelos, vistas y plantillas
Cul es la diferencia con un proyecto?
- Conjunto de aplicaciones
- Configuraciones globales para todas las aplicaciones
- Misma conexin a la base de datos
- Permite reutilizar cdigo
Ejemplo [ humitos ]$ python manage.py startapp posts
- Notar el uso demanage.py
- Archivos__init__.py, models.py, views.py
8. Introduccin a Django Modelos
- Base de datos
- Un modelo por tabla
- Propios de cada aplicacin
Configuracin del motor
- Archivosettings.py del proyecto
Definicin de los modelos DATABASE_ENGINE = ' sqlite3 ' DATABASE_NAME = ' /home/humitos/blog/database.db ' DATABASE_USER = '' ...
- Editar el archivomodels.pyde la aplicacin
- Un modelo por tabla
- Propios de cada aplicacin
9. Introduccin a Django Definicin de modelos Modelo 'Post'
- Dos campos ms un id
- tituloes un string de mximo 50 caracteres,contenidoes un texto () yetiquetases una relacin de muchos a muchos con Etiqueta
- Equivalente en SQL:
fromdjango.dbimportmodels classPost(models.Model): titulo = models.CharField(max_length= 50 ) contenido = models.TextField() etiquetas = models.ManyToManyField(Etiqueta) [ humitos ]$ python manage.py sql posts 10. Introduccin a Django Definicin de modelos Instalar la aplicacin
- Archivosettings.py
- INSTALLED_APPS
- Agregar la lnea'blog.posts'
- Sincronizar la base de datos (syncdb)
- Prueba en el shell
classEtiqueta(models.Model): nombre = models.CharField(max_length= 25 ) classComentario(models.Model): autor = models.CharField(max_length= 25 ) contenido = models.TextField() post = models.ForeignKey(Post) 11. Introduccin a Django Sistema de administracin
- Aplicacin nativa de Django
- ABM muy sencillo con interfaz web
Instalacin
- Como cualquier otra aplicacin (INSTALLED_APPS)
- Sincronizar la BD
- Crear superusuario
- Habilitar la url enurls.py
- Acceder a http://localhost:8000/admin
Agregar nuestros modelos
- admin.pyen cada aplicacin
- Registrar los modelos
12. Introduccin a Django Vistas
- Simple funcin de Python
- Recibe una peticin web (request) y devuelve una respuesta
- Imgen, archivo de texto, HTML, etc
Primer vista
- Importar funciones, modelos y shotcuts necesarios
- Definir una funcin
- Manejar la peticin
- Retornar un HttpResponse
- Modificarurls.pypara que acepte esta vista
Agregar nuestros modelos
- admin.pyen cada aplicacin
- Registrar los modelos
13. Introduccin a Django Ejemplo fromdjango.shortcutsimportrender_to_response fromdjango.httpimportHttpResponseRedirect fromblog.posts.modelsimportPostForm, Post defagregar_post(request): ifrequest.method == ' GET ': formulario = PostForm() returnrender_to_response(' agregar_post.html ', {' formulario ': formulario}) else : formulario = PostForm(request.POST) ifformulario.is_valid(): formulario.save() returnHttpResponseRedirect(' / ') 14. Introduccin a Django Sistema de plantillas
- Cdigo Django dentro de HTML
- Flujos bsicos
- Sustitucin de variables
Herencia
- Definir un base.html
- Header y footer
- Cambiar
- {% extends base.html %}
- Escribir los bloques interesantes
- {% block title %}
Etiquetas
- I f:{% if variable %}
- for : {% for post in posts %}
- {% endfor %} / {% endif %}
15. Introduccin a Django Sistema de plantillas
- Agregar nuestras plantillas ensettings.py
- TEMPLATE_DIRS
Filtros
- Se aplican a variables antes de ser mostradas
- lower, truncatewords, etc
- {{ variable | lower }}
- {{ variable | truncatewords:25 }}
Extensin
- Definir nuestros propios filtros, etiquetas y bloques
- Con o sin argumentos
- Muy sencillo
16. Introduccin a Django Preguntas? Preguntas? Preguntas? Preguntas? Preguntas? Preguntas? Preguntas? Preguntas? Preguntas? Preguntas? 17. Introduccin a Django Manuel Kaufmann [email_address] Muchas Gracias! Comunidad Django:
- Lista de correo:http://groups.google.com/group/django-es
- Libro en espaol:http://humitos.homelinux.net/django-book
- Canal de IRC:#django-es en irc.freenode.net