SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
El
framework
web
defini1vo

                Ander
Beaskoetxea

                 abeaskoetxea@gmail.com

                      Jaime
Irurzun
abril
2009       jaime.irurzun@gmail.com
Índice
• Frameworks
web
• Django
   • FilosoGa
   • Caracterís1cas
   • Rendimiento
• Conclusiones
y
Preguntas
Frameworks
web
Django:
Filoso6a
• Bajo
acoplamiento:
Paradigma
MVC
• Mínima
can1dad
de
código
• Desarrollo
ágil
• Don’t
Repeat
Yourself
(DRY)
• Explícito
frente
a
implícito
• Consistencia
Django:
Caracterís:cas
• Mapeador
Objeto‐Relacional
(M)
• URLs
y
Vistas
(C)
• Sistema
de
Templates
(V)
• Formularios
• Internacionalización
• Auten1cación
[django.contrib.auth]
• Administración
[django.contrib.admin]
Django:
Esquema
Global
Mapeador
O‐R
Definición
modelo
(DDL):



class Fabricante(models.Model):


   nombre = models.CharField(blank=False, max_length=40)

   email = models.EmailField()

class Producto(models.Model):


   descripcion = models.CharField(blank=False, max_length=100)

   fecha_alta = models.DateTimeField(blank=True, default=datetime.now)

   precio = models.DecimalField(max_digits=4, decimal_places=2)

   fabricante = models.ForeignKey(Fabricante)
Mapeador
O‐R
Manipulación
modelo
(DML):

 •   SELECT
de
1
registro:

 p = Productos.objects.get(id=5)



 •   SELECT
de
N
registros:

 ps1 = Productos.objects.filter(precio__gt=10.95)

 ps2 = Productos.objects.exclude(description__startswith=’d’)

 ps3 = ps1.order_by(‘-fecha_alta’, ‘fabricante’)
Mapeador
O‐R
Manipulación
modelo
(DML):

                               •
 •                                 UPDATE:
     INSERT:
                               f = Fabricantes.objects.get(...)
 f = Fabricante()

                               f.email = “support@apple.com”
 f.nombre = “Apple Inc.”

                               f.save()
 f.email = “steve@apple.com”

 f.save()

                               •   DELETE:
                               f = Fabricantes.objects.get(...)

                               f.delete()
Django:
Esquema
Interno




•                    •                      •
    Modelo
=
Model       Vista
=
Template       Controlador
=
View
URLs
y
Vistas
• El
fichero
urls.py
actúa
como
puerta
de
entrada
para

   las
pe1ciones
HTTP

• Se
definen
URLs
elegantes
mediante
expresiones

   regulares
que
redirigen
a
funciones
de
views.py

• Cada
expresión
regular
delega
en
una
vista:
  •   Pe1ción:
hfp://dominio.com/fabricante/4

  •   (r'^fabricante/(.*)/?$', 'dominio.app.views.ficha_fabr')
URLs
y
Vistas
• La
función
de
views.py
recibe
un
objeto
especial
con

   la
pe1ción
y
todos
los
parámetros
de
la
URL:
  •   Pe1ción:
hfp://dominio.com/fabricante/4

  •   (r'^fabricante/(.*)/?$', 'dominio.app.views.ficha_fabr')

  def ficha_fabr(request, fabricante_id):

      f = Fabricantes.objects.get(id=fabricante_id)
      ps = Productos.objects.filter(fabricante=f)

      return render_to_response(‘fabr.html’,
                               {‘fabricante’: f, ‘productos’: ps})
Sistema
de
Templates
• Se
centran
exclusivamente
en
la
visualización

• Son
ficheros
.html
con
e1quetas
especiales
de
Django:
                   {% if ... %}
                   
                         {% for ... in ... %}
                   {% else %} {% if ... %}
  {{ variable }}                             {% empty %}
                   {% else %}
                                             {% endfor %}
                   {% endif %}
Sistema
de
Templates
                       Ejemplo
básico
<html>
<head>
   <title>Ficha de fabricante</title>
</head>
<body>
   <h1>{{fabricante.nombre }}</h1>
   Productos fabricados:<br /><br />
   <table>
       <th><td>Descripción</td><td>Precio</td></th>
       {% for p in productos %}
          <tr>
             <td>{{ p.descripcion }}</td>
             <td>{{ p.precio }}</td>
          </tr>
       {% endfor %}
   </table>
</body>
</html>
Sistema
de
Templates
       Ejemplo
básico
Sistema
de
Templates
             Herencia
de
templates
  <html>
  <head>
     <title>{% block titulo %}Mi web{% endblock %}</title>
  </head>
  <body>
     <div id=quot;menuquot;>
     {% block menu %}
     <ul>
         <li><a href=quot;/quot;>Home</a></li>
         <li><a href=quot;/blog/quot;>Blog</a></li>
     </ul>
     {% endblock %}
     </div>
     <div id=quot;contenidoquot;>
         {% block contenido %}{% endblock %}
     </div>
  </body>
  </html>
Sistema
de
Templates
             Herencia
de
templates
  {% extends quot;base.htmlquot; %}

  {% block titulo %}Mi blog{% endblock %}

  {% block contenido %}

     ...

  {% endblock %}
Sistema
de
Templates
                               Filtros

• Permiten
trabajar
sobre
los
datos
recibidos
  {{ nombre|default:quot;<sin nombre>quot; }}


  {{ productos|length }}


  {{ comentario|striptags }}




• Posibilidad
de
crear
filtros
propios
Formularios
• Facilitan
enormemente
la
creación
de
formularios
• Intervienen
tres
1pos
de
clases
fundamentales:
    • Widget:
Componente
visual
de
HTML
        TextInput       =>   <input type=”text”...>
        CheckboxInput   =>   <input type=”checkbox”...>


    • Field:
Restricciones
asociadas
a
un
Widget
       EmailField
                         widget, label, initial, error, ...
       IPAddressField


    • Form:
Conjunto
de
Fields
de
un
formulario
       ContactForm (nombre, email, telefono, mensaje, ...)
Formularios
• Paso
1/3:
Creación
de
la
clase
formulario
  from django import forms

  class ContactForm(forms.Form):
      asunto = forms.CharField(max_length=100)
      mensaje = forms.CharField()
      remitente = forms.EmailField()
Formularios
• Paso
2/3:
Programación
de
la
view
asociada
  def contactar(request):
      if request.method == 'POST':
          form = ContactForm(request.POST)
          if form.is_valid():
              # ...
              return HttpResponseRedirect('/gracias/')
      else:
          form = ContactForm()

     return render_to_response('contactar.html',
                               {'form': form, ...})
Formularios
• Paso
3/3:
Inclusión
en
la
template
  <form action=quot;/contactar/quot; method=quot;POSTquot;>
     {{ form.asunto.errors }}
     <label for=quot;id_asuntoquot;>Asunto:</label>
     {{ form.asunto }}

    {{ form.mensaje.errors }}
    <label for=quot;id_ mensajequot;>Mensaje:</label>
    {{ form.mensaje }}

    {{ form.remitente.errors }}
    <label for=quot;id_remitentequot;>Tu email:</label>
    {{ form.remitente }}

     <input type=quot;submitquot; value=quot;Enviarquot; />
  </form>
Formularios
• Alterna1va:
Formularios
a
par1r
del
modelo
  from django.db import models
  from django.forms import ModelForm

  class Contacto(models.Model):
     nombre = models.CharField(max_length=100)
     email = models.EmailField()
     password = models.PasswordField()
     ...

  class ContactoParcialForm(ModelForm):
      class Meta:
          model = Contacto
          fields = ('nombre', 'email')
Internacionalización
• Ofrece
integración
con
la
librería
GNU
geVext
de
i18n
   • Un
fichero
.pot
con1ene
todos
los
strings
usados
              contabilidad.pot

    • En
cada
fichero
.po
se
guarda
una
traducción
              es_ES.pot


es_AR.pot


en_GB.pot

    • Cada
.po
se
compila
y
genera
un
.mo
binario
              es_ES.mo


es_AR.mo


en_GB.mo
Internacionalización
• ¿Cómo
indicar
qué
strings
deben
ser
traducidos?
   from django.utils.translation import ugettext as _

   print _(“Cadena de texto”)



• Ges1ón
cómoda
de
singulares
y
plurales
   from django.utils.translation import ungettext

   frase = ungettext(“Hay %(total)d resultado”,
                     “Hay %(total)d resultados”, total)
            % { ‘total’: total }
django.contrib.auth
• Ofrece
un
sistema
de
auten1cación
prefabricado
                       Modelo
django.contrib.auth
         Vista                                Controlador
Templates                     Views                        Formularios
  registra1on_form.html          login()                      AdminPasswordChangeForm
  registra1on_complete.html      logout()                     Authen1ca1onForm
  ac1vate.html                   logout_then_login()          PasswordChangeForm
                                 password_change()            PasswordResetForm
                                 password_change_done()       UserCrea1onForm
                                 password_reset()
                                 password_reset_done()
                                 redirect_to_login()
                                 password_reset_confirm()
                                 password_reset_complete()
django.contrib.admin
• Genera
una
aplicación
ABM
sobre
un
modelo
de
datos
   1. Añadir
la
aplicación
al
fichero
seYngs.py
      INSTALLED_APPS = (
         ...
         'django.contrib.admin',
      )

   2. Añadir
la
url
de
acceso
al
fichero
urls.py
      from django.contrib import admin
      admin.autodiscover()

      urlpatterns += patterns(‘’,
         ...
         (r'^admin/(.*)', admin.site.root),
      )
Django:
Rendimiento


                                  Compara:va
 [1]




[1]
Alrond’s
technoblog,
2007
|
hfp://www.alrond.com/en/2007/jan/25/performance‐test‐of‐6‐leading‐frameworks/
Django:
Rendimiento
                            Velocidad
(Pe1ciones/seg)
CodeIgniter
(PHP)
                                                             1100
Catalyst
(Perl)
Django
(hilos)
Django
(hilos)
+
Psyco
Django
(procesos)
Django
(procesos)
+
Psyco                                   825
RubyOnRails
1.1.6
RubyOnRails
1.2.1
Symphony
(PHP)
TurboGears
(Python)
                                                            550


                                                        275


                                                        0
Django:
Rendimiento
                            Memoria
Virtual
consumida
(KB)
CodeIgniter
(PHP)
                                                                  300000
Catalyst
(Perl)
Django
(hilos)
Django
(hilos)
+
Psyco
Django
(procesos)
Django
(procesos)
+
Psyco                                        225000
RubyOnRails
1.1.6
RubyOnRails
1.2.1
Symphony
(PHP)
TurboGears
(Python)                                              150000


                                                             75000


                                                             0
Django:
Rendimiento
                            Memoria
Real
consumida
(KB)
CodeIgniter
(PHP)
                                                               200000
Catalyst
(Perl)
Django
(hilos)
Django
(hilos)
+
Psyco
Django
(procesos)
Django
(procesos)
+
Psyco                                     150000
RubyOnRails
1.1.6
RubyOnRails
1.2.1
Symphony
(PHP)
TurboGears
(Python)                                           100000


                                                          50000


                                                          0
Django:
Rendimiento
                            Consumo
CPU
(%)
CodeIgniter
(PHP)
                                                   60
Catalyst
(Perl)
Django
(hilos)
Django
(hilos)
+
Psyco
Django
(procesos)
Django
(procesos)
+
Psyco                         45
RubyOnRails
1.1.6
RubyOnRails
1.2.1
Symphony
(PHP)
TurboGears
(Python)                               30


                                              15


                                              0
Django:
Rendimiento
                            Tiempo
de
Respuesta
(seg)
CodeIgniter
(PHP)
                                                              5
Catalyst
(Perl)
Django
(hilos)
Django
(hilos)
+
Psyco
Django
(procesos)
Django
(procesos)
+
Psyco                                    3,75
RubyOnRails
1.1.6
RubyOnRails
1.2.1
Symphony
(PHP)
TurboGears
(Python)
                                                            2,5


                                                        1,25


                                                        0
Conclusiones

 ¿hacen
falta...?

       :‐)
Preguntas



   ?

Más contenido relacionado

La actualidad más candente

04 taller-django
04 taller-django04 taller-django
04 taller-django
samerscd
 

La actualidad más candente (20)

Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
desarrolo de sitios web php y mysql
desarrolo de sitios web php y mysqldesarrolo de sitios web php y mysql
desarrolo de sitios web php y mysql
 
Iniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosIniciación PHP 5. Ejercicios
Iniciación PHP 5. Ejercicios
 
Cómo crear plugins para Wordpress
Cómo crear plugins para WordpressCómo crear plugins para Wordpress
Cómo crear plugins para Wordpress
 
Introducción a recaptcha 3.0
Introducción a recaptcha 3.0Introducción a recaptcha 3.0
Introducción a recaptcha 3.0
 
4.Programación con PHP y MySQL
4.Programación con PHP y MySQL4.Programación con PHP y MySQL
4.Programación con PHP y MySQL
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Crear Plugin de WordPress desde Cero
Crear Plugin de WordPress desde CeroCrear Plugin de WordPress desde Cero
Crear Plugin de WordPress desde Cero
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
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
 
Programacion orientada a objetos en javascript
Programacion orientada a objetos en javascriptProgramacion orientada a objetos en javascript
Programacion orientada a objetos en javascript
 
Jquery para principianes
Jquery para principianesJquery para principianes
Jquery para principianes
 
Iniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLIniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQL
 
Curso Php
Curso PhpCurso Php
Curso Php
 
Php Con Postgres
Php Con PostgresPhp Con Postgres
Php Con Postgres
 
04 taller-django
04 taller-django04 taller-django
04 taller-django
 
Manual PHP 7
Manual PHP 7Manual PHP 7
Manual PHP 7
 
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...deSymfony 2013 -  Creando aplicaciones web desde otro ángulo con Symfony y A...
deSymfony 2013 - Creando aplicaciones web desde otro ángulo con Symfony y A...
 
Manual php completo by_ desarrolloweb
Manual php completo by_ desarrollowebManual php completo by_ desarrolloweb
Manual php completo by_ desarrolloweb
 
Practica Cinco Delphi
Practica Cinco DelphiPractica Cinco Delphi
Practica Cinco Delphi
 

Destacado

Open Source Modern Web Development
Open Source Modern Web DevelopmentOpen Source Modern Web Development
Open Source Modern Web Development
Jaime Irurzun
 
Modelo, vista, controlador
Modelo, vista, controladorModelo, vista, controlador
Modelo, vista, controlador
Cecy Villalta
 
MODELO VISTA CONTROLADOR
MODELO VISTA CONTROLADORMODELO VISTA CONTROLADOR
MODELO VISTA CONTROLADOR
René Pilataxi
 
Educación en un mundo conectado ppt
Educación en un mundo conectado pptEducación en un mundo conectado ppt
Educación en un mundo conectado ppt
Olimpia Castillo
 
Web pc minutes 18th november 2014
Web pc minutes  18th november 2014Web pc minutes  18th november 2014
Web pc minutes 18th november 2014
clerksmpc
 

Destacado (20)

Desarrollo web ágil con Python y Django
Desarrollo web ágil con Python y DjangoDesarrollo web ágil con Python y Django
Desarrollo web ágil con Python y Django
 
¿Porqué Python? ...y Django
¿Porqué Python? ...y Django¿Porqué Python? ...y Django
¿Porqué Python? ...y Django
 
Open Source Modern Web Development
Open Source Modern Web DevelopmentOpen Source Modern Web Development
Open Source Modern Web Development
 
Modelo, vista, controlador
Modelo, vista, controladorModelo, vista, controlador
Modelo, vista, controlador
 
MODELO VISTA CONTROLADOR
MODELO VISTA CONTROLADORMODELO VISTA CONTROLADOR
MODELO VISTA CONTROLADOR
 
SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...
SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...
SaaSy maps - using django-tenants and geodjango to provide web-gis software-a...
 
presentación Historica
presentación Historicapresentación Historica
presentación Historica
 
All things LinkedIn advertising by Robert Brady
All things LinkedIn advertising by Robert BradyAll things LinkedIn advertising by Robert Brady
All things LinkedIn advertising by Robert Brady
 
Spanyol 120x145
Spanyol 120x145Spanyol 120x145
Spanyol 120x145
 
Designing society through thinking | University of Helsinki
Designing society through thinking | University of HelsinkiDesigning society through thinking | University of Helsinki
Designing society through thinking | University of Helsinki
 
The Secret Sauce for Innovation (shortform)
The Secret Sauce for Innovation (shortform) The Secret Sauce for Innovation (shortform)
The Secret Sauce for Innovation (shortform)
 
Glosario de puentes
Glosario de puentesGlosario de puentes
Glosario de puentes
 
Finanzierungsmöglichkeiten von IT-Unternehmen durch die Hausbank
Finanzierungsmöglichkeiten von IT-Unternehmen durch die HausbankFinanzierungsmöglichkeiten von IT-Unternehmen durch die Hausbank
Finanzierungsmöglichkeiten von IT-Unternehmen durch die Hausbank
 
Oraciones 3ª declinación (5 11-14)
Oraciones 3ª declinación (5 11-14)Oraciones 3ª declinación (5 11-14)
Oraciones 3ª declinación (5 11-14)
 
Copia reducida health4.0
Copia reducida health4.0Copia reducida health4.0
Copia reducida health4.0
 
Resume 2014
Resume 2014Resume 2014
Resume 2014
 
Educación en un mundo conectado ppt
Educación en un mundo conectado pptEducación en un mundo conectado ppt
Educación en un mundo conectado ppt
 
Manual de imagen funtec
Manual de imagen funtecManual de imagen funtec
Manual de imagen funtec
 
HTML5 Handling Security Issues, Security Threats for HTML5, HTML5 Application...
HTML5 Handling Security Issues, Security Threats for HTML5, HTML5 Application...HTML5 Handling Security Issues, Security Threats for HTML5, HTML5 Application...
HTML5 Handling Security Issues, Security Threats for HTML5, HTML5 Application...
 
Web pc minutes 18th november 2014
Web pc minutes  18th november 2014Web pc minutes  18th november 2014
Web pc minutes 18th november 2014
 

Similar a Django: el framework web definitivo

Buenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsBuenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on Rails
Sergio Gil
 
Php05 funciones usuario
Php05 funciones usuarioPhp05 funciones usuario
Php05 funciones usuario
Julio Pari
 
Web matrix y j querymobile
Web matrix y j querymobileWeb matrix y j querymobile
Web matrix y j querymobile
Gonzalo C.
 
Html Y Javascript
Html Y JavascriptHtml Y Javascript
Html Y Javascript
oswchavez
 
Html Y Javascript
Html Y JavascriptHtml Y Javascript
Html Y Javascript
oswchavez
 

Similar a Django: el framework web definitivo (20)

Buenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsBuenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on Rails
 
Desymfony 2011 - Twig
Desymfony 2011 - TwigDesymfony 2011 - Twig
Desymfony 2011 - Twig
 
Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)
 
Código Bonito con PHP
Código Bonito con PHPCódigo Bonito con PHP
Código Bonito con PHP
 
Curso de Django | Django Course
Curso de Django | Django CourseCurso de Django | Django Course
Curso de Django | Django Course
 
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANSTutorial  JPA Parte 1  : CRUD BASICO CON JPA Y SWING en NETBEANS
Tutorial JPA Parte 1 : CRUD BASICO CON JPA Y SWING en NETBEANS
 
Introducción a Flask
Introducción a FlaskIntroducción a Flask
Introducción a Flask
 
Php05 funciones usuario
Php05 funciones usuarioPhp05 funciones usuario
Php05 funciones usuario
 
Workflows On Rails
Workflows On RailsWorkflows On Rails
Workflows On Rails
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
 
Web matrix y j querymobile
Web matrix y j querymobileWeb matrix y j querymobile
Web matrix y j querymobile
 
Django
DjangoDjango
Django
 
Crear modulos
Crear modulosCrear modulos
Crear modulos
 
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
JoomlaDay Sevilla 2015 - Desarrollo de plantillas Joomla!
 
Introducción a DJango
Introducción a DJangoIntroducción a DJango
Introducción a DJango
 
PHP
PHPPHP
PHP
 
Html Y Javascript
Html Y JavascriptHtml Y Javascript
Html Y Javascript
 
Html Y Javascript
Html Y JavascriptHtml Y Javascript
Html Y Javascript
 
Php Basico
Php BasicoPhp Basico
Php Basico
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (15)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 

Django: el framework web definitivo