0% found this document useful (0 votes)
51 views63 pages

WWW - Yaco.es Media Community Oswc Django

The document introduces agile programming methodologies and frameworks for web applications using Django, discussing how to choose an agile framework by focusing on aspects like being simple, flexible, having a quick development cycle and facilitating change, using Python as an example of an agile language.

Uploaded by

William Jxjxj
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views63 pages

WWW - Yaco.es Media Community Oswc Django

The document introduces agile programming methodologies and frameworks for web applications using Django, discussing how to choose an agile framework by focusing on aspects like being simple, flexible, having a quick development cycle and facilitating change, using Python as an example of an agile language.

Uploaded by

William Jxjxj
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 63

PROGRAMACIN GIL DE APLICACIONES WE CON D!

ANGO

Manuel Saelices [email protected]

#n$ice $e con%eni$os
1. ". 4. 5. 9. :. ;. =.

In%&o$ucci'n a me%o$olo()as *(iles +,u- .e$i& a un /&ame0o&1 0e23 +Es !"EE *(il3 Py%6on7 e8em.lo $e len(ua(e *(il In%&o$ucci'n a D8an(o Demo7 $esa&&ollo en D8an(o D8an(o 2y e<am.le Re/le<iones /inales

"

#n$ice $e con%eni$os
1. ". 4. 5. 9. :. ;. =.

Introduccin a metodologas giles +,u- .e$i& a un /&ame0o&1 0e23 +Es !"EE *(il3 Py%6on7 e8em.lo $e len(ua(e *(il In%&o$ucci'n a D8an(o Demo7 $esa&&ollo en D8an(o D8an(o 2y e<am.le Re/le<iones /inales

In%&o$ucci'n me%o$olo()as *(iles

Me%o$olo()as %&a$icionales

>acen -n/asis en la .lani/icaci'n E%a.as $e/ini$as


An*lisis $e &e?uisi%os Es.eci/icaci'n y $ise@o $el sis%ema Im.lemen%aci'n P&ue2as Documen%aci'n Es una me%o$olo()a .esa$a No &es.on$e 2ien an%e el cam2io
5

P&inci.al .&o2lemaA

In%&o$ucci'n me%o$olo()as *(iles

P&o2lemas en $esa&&ollo so/%0a&e

El clien%e

no sa2e $e %ecnolo()a no sa2e lo ?ue ?uie&e7 si no lo Be an%es .&e/ie&e al(o /uncional ?ue lee& un $ise@o

Es $i/)cil %ene& %o$os los ca2os a%a$os La %ecnolo()a cam2ia &*.i$o Siem.&e su&(en .&o2lemas

In%&o$ucci'n me%o$olo()as *(iles

ASERCOA TODO DESARROLLO SOFTWARE ES MUY SUSCEPTIBLE AL CAMBIO DE REQUISITOS

In%&o$ucci'n me%o$olo()as *(iles

Me%o$olo()as *(iles

Se en/&en%an a las me%o$olo()as %&a$icionales Dn/asis en la a$a.%a2ili$a$ $el .&oceso A(iliEan los .&ocesos $e $esa&&ollo Da .o& 6ec6o ?ue los &e?uisi%os cam2ia&*n In%en%aA

P&eBe& el cam2io lo an%es .osi2leA en%&e(a cons%an%e Res.on$e& al cam2io $e /o&ma &*.i$a
;

#n$ice $e con%eni$os
1. 2. 4. 5. 9. :. ;. =.

In%&o$ucci'n a me%o$olo()as *(iles Qu pedir a un framework web? +Es !"EE *(il3 Py%6on7 e8em.lo $e len(ua(e *(il In%&o$ucci'n a D8an(o Demo7 $esa&&ollo en D8an(o D8an(o 2y e<am.le Re/le<iones /inales

+,u- .e$i& a un /&ame0o&1 0e23

GLa 2elleEa con$uce a la /elici$a$7 y la /elici$a$ con$uce a la .&o$uc%iBi$a$H


DaBi$ >einemeie& >anson7 c&ea$o& $e Ru2y on Rails

+,u- .e$i& a un /&ame0o&1 0e23

El .&oceso en un /&ame0o&1 0e2 $e2e se&

(il

R*.i$o $e $esa&&olla& R*.i$o ciclo $e $esa&&ollo Jle<i2le Jacili%a& el $es.lie(ue C'$i(o le(i2le7 man%eni2le y 2ello ConBenci'n so2&e con/i(u&aci'n DiBe&%i$o KLM
1I

Sim.le

+,u- .e$i& a un /&ame0o&1 0e23

+C'mo se& *(il3

Au%oma%iEa&Nelimina& %a&eas &e.e%i%iBas


DRO PDonQ% Re.ea% Oou&sel/M En ins%alaci'n y $es.lie(ue En $esa&&ollo


sis%ema $e .e&misos y usua&ios cons%&ucci'nNBali$aci'n $e /o&mula&ios c&eaci'n $el mo$elo $e $a%os c&eaci'n $e $a%os $e .&ue2a

R*.i$o ciclo $e $esa&&ollo


Elimina& necesi$a$ $e &einicios Sis%ema $e &eca&(a $e li2&e&)as


11

+,u- .e$i& a un /&ame0o&1 0e23

+C'mo se& *(il3

R%iliEa& un ORM PO28ec% Rela%ional Ma..e&M

A2s%&ae $e la 2ase $e $a%osA


Jle<i2ili$a$ an%e el cam2io $e &e?uisi%os Reu%iliEaci'n .a&a o%&os .&oyec%os

La m*?uina c&ea el S,L El c'$i(o &esul%a m*s le(i2le Aumen%a la se(u&i$a$ $e %u sis%ema

No 6ay inyecci'n S,L Menos /allos en .&o(&amaci'n

1"

+,u- .e$i& a un /&ame0o&1 0e23

Sin ORM
cursor.execute(SELECT * FROM personas \ WHERE edad= + 20) for row in cursor.fetchall(): id = row[0] edad = row[1] cursor.execute(UPDATE personas WHERE id=%s \ SET edad=%d % (id, edad+1))

Con ORM
for p in Personas.listado(edad=20): # ejecuta SELECT p.edad = p.edad + 1 p.nombre = Juan p.update() # ejecuta UPDATE
14

+,u- .e$i& a un /&ame0o&1 0e23

+C'mo se& *(il3

Ins%alaci'n y $es.lie(ue

Sc&i.%s $e au%oma%iEaci'n .a&a %o$o C&eaci'n au%om*%ica $el es?uema $e $a%os C&eaci'n au%om*%ica $e $a%os $e .&ue2a Ces%s uni%a&ios7 $e ca&(a y /uncionales Ce ?ui%a el mie$o aA

In%e(&aci'n $e sis%ema $e %es%eo


Re/ac%o&iEa& el c'$i(o Inclui& nueBas /uncionali$a$es

Recue&$aA buscamos adaptabilidad


15

+,u- .e$i& a un /&ame0o&1 0e23

+C'mo se& sim.le3

Len(ua8e $e .&o(&amaci'n sim.le


sim.le S le(i2le T c'$i(o man%eni2le el c'$i(o es le)$o muc6o m*s ?ue esc&i%o o&ien%e a /o&ma& sis%emas sim.les &esul%e /*cilmen%e man%eni2le no ?uie&o con/i(u&a& 1I /ic6e&os UML $e2e conBeni&se la no&ma comVn s'lo con/i(u&a& la e<ce.ci'n a la no&ma
19

J&ame0o&1 ?ue

ConBenci'n so2&e con/i(u&aci'n


+,u- .e$i& a un /&ame0o&1 0e23

+C'mo se& sim.le3

So2&e 6e&&amien%as y 0iEa&$s


Ce (ene&an .a&%e $el c'$i(o Ce con/i(u&an los /ic6e&os UMLs Los 0iEa&$s ! son la e<cusa RECRERDAA "l cdigo es ledo ms #ue escrito

Co$o muy 2ien7 .e&oA


La base debe ser simple.

1:

+,u- .e$i& a un /&ame0o&1 0e23

Po& Vl%imo

J*cilmen%e in%e(&a2le con Go%&osH E/icien%e y escala2le Me8o& e<.l)ci%o ?ue im.l)ci%o

MinimiEa& la ma(ia Da%osNL'(icaNP&esen%aci'n No o2li(a&%e a un IDE conc&e%o Pe&mi%i& sis%ema $e con%&ol $e Be&siones
1;

Se.a&a& ca.as

Pe&mi%i& las 2uenas me%o$olo()as


#n$ice $e con%eni$os
1. ". $. 5. 9. :. ;. =.

In%&o$ucci'n a me%o$olo()as *(iles +,u- .e$i& a un /&ame0o&1 0e23 "s %2"" gil? Py%6on7 e8em.lo $e len(ua(e *(il In%&o$ucci'n a D8an(o Demo7 $esa&&ollo en D8an(o D8an(o 2y e<am.le Re/le<iones /inales

1=

+Es !"EE *(il3

Res.ues%aA NO

API Com.le8a Len(ua8e com.ila$o y GBe&2osoH Con/i(u&aci'n com.le8a


Muc6os /ic6e&os UMLs E&&o&es $e com.ilaci'n $e%ec%a$os en e8ecuci'n Com.ila& %o$o Gene&a& .0a& Muc6as Beces7 &einicia& Comca%
1F

Len%o ciclo $e $esa&&ollo


+Es !"EE *(il3

Mecanismos a(iliEaci'n !"EE

IDEs $e $esa&&ollo

Com.le%an el c'$i(o Pse%%e&s7 (e%%e&s7 e%c.M Man%ienen UML sinc&oniEa$os Jacili%an el $es.lie(ue Cienen 0iEa&$s7 .lu(ins7 6e&&amien%as

Gene&an c'$i(o Dise@a$o&es (&*/icos

E8em.losA MyEcli.se7 !DeBelo.e&7 e%c.

Si(ue 6a2ien$o un .&o2lemaA

La base debe ser gil


"I

#n$ice $e con%eni$os
1. ". 4. &. 9. :. ;. =.

In%&o$ucci'n a me%o$olo()as *(iles +,u- .e$i& a un /&ame0o&1 0e23 +Es !"EE *(il3 '(t)on* e+emplo de lenguage gil In%&o$ucci'n a D8an(o Demo7 $esa&&ollo en D8an(o D8an(o 2y e<am.le Re/le<iones /inales

"1

Py%6on7 e8em.lo $e len(ua8e *(il

Len(ua8e Py%6on

In%e&.&e%a$o J*cil $e a.&en$e& In$en%a$o

def load_comics(path): comics = {} file = open(path) for line in file.read(): url, name = line.split(':') comics[url] = name.strip() return comics
""

Py%6on7 e8em.lo $e len(ua8e *(il

Py%6on Bs !aBa

Py%6on al(o m*s len%o APIs simila&es Py%6on m*s .&o$uc%iBo


Ci.a$o $in*mico P$uc1 %y.in(M S6ell in%e&ac%iBa C'$i(o m*s lim.io


Menos GBe&2osoH Esc&i2es menos !aBa innecesa&iamen%e com.le8oA Walli8aJac%o&y

http://www.abelgonzalez.com/entornosabiertos/no-olvides-el-vajillafactory_p154.html

"4

Py%6on7 e8em.lo $e len(ua8e *(il

Py%6on Bs !aBa Pe8em.losM

G>ola mun$oH

!aBa

public class HolaMundo { public static void main (String[] args) { System.out.println("Hola mundo"); } }

Py%6on

print Hola mundo

"5

Py%6on7 e8em.lo $e len(ua8e *(il

Py%6on Bs !aBa Pe8em.losM

Lee& $e un /ic6e&o

!aBa

import java.io.*; BufferedReader fichero = new BufferedReader( new FileReader(entrada.txt)); while((linea=fichero.readLine())!=null) System.out.println(linea);

Py%6on

fichero = open('entrada.txt') for linea in fichero: print linea


"9

#n$ice $e con%eni$os
1. ". 4. 5. ,. :. ;. =.

In%&o$ucci'n a me%o$olo()as *(iles +,u- .e$i& a un /&ame0o&1 0e23 +Es !"EE *(il3 Py%6on7 e8em.lo $e len(ua(e *(il Introduccin a -+ango Demo7 $esa&&ollo en D8an(o D8an(o 2y e<am.le Re/le<iones /inales

":

In%&o$ucci'n a D8an(o

Ca&ac%e&)s%icas 2*sicas

Len(ua8e Py%6on Desa&&ollo muy &*.i$o Simila& Ru2y on Rails usca el .e&/eccionismo Pa%&'n MWC Am.lia comuni$a$ >e&manos mayo&es como Goo(le

"+emploA Google App E gi e s'lo so.o&%a .y%6on e in%e(&a D8an(o .o& $e/ec%o.
";

In%&o$ucci'n a D8an(o

Dise@o .e&/eccionis%a

C'$i(o muy le(i2le E<?uisi%a me%o$olo()a $esa&&ollo Pe&/ec%a $ocumen%aci'n ORM Dise@a$o& RRLs Wis%as PXcon%&ola$o&esM Plan%illas
"=

Com.onen%es /un$amen%ales

In%&o$ucci'n a D8an(o

O%&os com.onen%es o!"#o$#"%e#bo&


In%e&/aE a$minis%&aci'n au%om*%ica Sis%ema $e /o&mula&ios Sis%ema $e au%en%icaci'nNau%o&iEaci'n In%e&nacionaliEaci'n Sis%ema $e cac6J&ame0o&1 $e sin$icaci'n J&ame0o&1 %es%in( uni%a&io y /uncional Se&ialiEa$o& UML y !SON Sis%ema GIS ... "F

In%&o$ucci'n a D8an(o

A.licaciones 0e2 &eu%iliEa2les


Ca((in( Wi1i Jo&os CMS lo( ... 6%%.ANN000.$8an(o.lu(a2les.comN 6%%.ANNco$e.(oo(le.comN


4I

M*s en

In%&o$ucci'n a D8an(o

Recu&sos 2*sicos

Documen%aci'n o/icial

6%%.ANN$ocs.$8an(o.&o8ec%.comN 6%%.ANNco$e.$8an(o.&o8ec%s.comN 6%%.ANN000.$8an(osi%es.o&(N

Wi1i7 SWN7 Cic1e%s7 e%c.

Al(unos si%ios 0e2 en D8an(o

41

In%&o$ucci'n a D8an(o

Mo$elo $e $a%os

Rsa un ORM .&o.io Sim.le y .o$e&oso E8em.lo $e $e/inici'n

class Equipo(models.Model): nombre = models.CharField(max_length=100) class Jugador(models.Model): nombre = models.CharField(max_length=100) equipo = models.ForeignKey(Equipo)

4"

In%&o$ucci'n a D8an(o

Mo$elo $e $a%os

E8em.lo $e uso

>>> madrid = Equipo(nombre='Real Madrid') >>> madrid.save() # ejecuta INSERT >>> jug = Jugador(nombre='Raul', equipo=madrid) >>> jug.save() # ejecuta INSERT >>> jug.equipo.nombre 'Real Madrid' >>> jug2 = Jugador(nombre='Casillas', equipo=madrid) >>> jug2.save() >>> for j in Jugador.objects.all(): # efectua SELECT ... print j.nombre Raul Casillas
44

In%&o$ucci'n a D8an(o

ORM D8an(o Bs. >i2e&na%e


>i2e&na%eA ORM $e !aBa m*s usa$o >i2e&na%e m*s /le<i2le


Pe&mi%e $e/ini& %us .&o.ios ma..in(s Aumen%a com.le8i$a$ ,uie&e cu2&i& 1IIY $e casu)s%ica C'$i(o m*s le(i2le y man%eni2le Desa&&ollo muc6o m*s &*.i$o ,uie&e cu2&i& FFY casu)s%ica.

D8an(o ORM m*s sim.le


Pa&a %o$o lo $em*s7 S,L.


45

In%&o$ucci'n a D8an(o

ORM D8an(o Bs. >i2e&na%e

E8em.lo $e/inici'n >i2e&na%e


privateLongid;

publicclassEquipo{

privateStringnombre; publicLonggetId(){ returnid;} publicvoidsetId(id){ this.id=id;} publicStringgetNombre(){ returnnombre; } publicvoidsetNombre(String nombre){ this.nombre=nombre; } }
49

In%&o$ucci'n a D8an(o

D8an(o ORM Bs. >i2e&na%e

E8em.lo $e/inici'n >i2e&na%e

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" http://hibernate.sourceforge.net/hibernate-mapping2.0.dtd"> <hibernate-mapping> <class name="com.example.model.Equipo" table="equipos"> <id name="id" column="id"> <generator class="native"/></id> <property name="nombre" column="nombre"/> </class> </hibernate-mapping>
4:

In%&o$ucci'n a D8an(o

... Configuration cfg = new Configuration(); cfg.addResource("Project.hbm.xml"); cfg.setProperties(System.getProperties()); SessionFactory sf = cfg.buildSessionFactory(); Session s = sf.openSession(); Transaction tx = s.beginTransaction(); Equipo equipo = new Equipo(); equipo.setNombre("Real Madrid"); s.save(project); tx.commit(); s.close();
4;

D8an(o ORM Bs. >i2e&na%e

E8em.lo uso >i2e&na%e

In%&o$ucci'n a D8an(o

Dise@o $e RRLs

No se ?uie&en RRLs 6o&&i2les


/oo.esN2a&NsZBie0Nin/&as%&uc%u&eNI7"9597CC P1:;4:5"=9I==7II.6%ml /oo.esNno%icias..6.3anyoT"II:

In$e.en$encia en%&e RRLs y l'(ica $e a.licaci'n Se ?uie&e a&?ui%ec%u&a RESC


/oo.esNno%iciasN"II=N /oo.esNno%iciasNc&ea&N /oo.esNno%iciasNcon/Los0cN2o&&a&N


4=

In%&o$ucci'n a D8an(o

Dise@o $e RRLs

Se im.lemen%an con e<.&esiones &e(ula&es >ay un ma..ea$o& $e RRLs P&o.o&ciona se(u&i$a$ EnlaEan con las Bis%as Pcon%&ola$o&M

E8em.loA

from news.views import caso_especial_03, lista_anual urlpatterns = patterns('', ('^noticias/2003/$', caso_especial_03), ('^noticias/(\d{4})/$', lista_anual), )
4F

In%&o$ucci'n a D8an(o

Wis%as

RealiEan la l'(ica $e la a.licaci'n Es .a&eci$o al con%&ola$o& MWC Suele &en$e&iEa& una .lan%illa E8em.loA

from news.models import Noticia def lista_anual(request, anyo): noticias = Noticia.objects.filter(anyo=anyo) return render_to_response('noticias.html', {'noticias': noticias})
5I

In%&o$ucci'n a D8an(o

Plan%illas

Jiloso/)a

No inclui& l'(ica en .lan%illas No usa& UML Pno s'lo .ensa$o .a&a >CMLM Jacili%a& la sin%a<is .a&a el $ise@a$o& Muy le(i2le So.o&%a 6e&encia $e .lan%illas E<%ensi2le

Len(ua8e .&o.io

51

In%&o$ucci'n a D8an(o

Plan%illas

E8em.loA

{% extends "base.html" %} {% block contenido %} <ul> {% for n in noticias %} <li> <a href="/noticias/{{ n.id }}/"> {{ n.titulo|upper }} </a> </li> {% endfor %} </ul> {% endblock %}
5"

In%&o$ucci'n a D8an(o

Jo&mula&ios

Li2&e&)a inclui$a en D8an(o Dos %i.os


$8an(o./o&ms.Jo&m7 caso (ene&al $8an(o./o&ms.Mo$elJo&m7 so2&e mo$elos Jo&mula&ios Cam.os Wi$(e%s

Com.onen%es

54

In%&o$ucci'n a D8an(o

Jo&mula&ios

E8em.los sim.lesA

Jo&mula&io no asocia$o a mo$elo


from django import forms class ontacto!orm"forms.!orm#: nombre $ models. har!ield"# email $ models.%mail!ield"#

Jo&mula&io asocia$o a mo$elo


from django import forms from e&'ipo.models import %&'ipo class %&'ipo!orm"forms.(odel!orm#: class (eta: model $ %&'ipo
55

In%&o$ucci'n a D8an(o

Jo&mula&ios

Rso en consolaA

>>> from equipos.forms import EquipoForm >>> form = EquipoForm() >>> print form <tr><th><label for="id_nombre">Nombre:</label></th><td><input id="id_nombre" type="text" name="nombre" maxlength="100" /></td></tr> >>> print form.as_p() <p><label for="id_nombre">Nombre:</label> <input id="id_nombre" type="text" name="nombre" maxlength="100" /></p> ... (cont.)
59

In%&o$ucci'n a D8an(o
>>> from equipos.models import Equipo >>> equipo = Equipo.objects.get(nombre='Real Madrid') >>> form = EquipoForm(instance=equipo) >>> print form.as_p() <p><label for="id_nombre">Nombre:</label> <input id="id_nombre" type="text" name="nombre" value="Real Madrid" maxlength="100" /></p> >>> datos_peticion_post = {'nombre': 'Barcelona'} >>> form = EquipoForm(datos_peticion_post) >>> nuevo_equipo = form.save() # ejecuta sql INSERT >>> datos_incorrectos = {'nombre': ''} >>> form = EquipoForm(datos_peticion_post) >>> form.is_valid() False >>> form.errors() {'nombre': [u'This field is required.']}
5:

In%&o$ucci'n a D8an(o

Jo&mula&ios

En Bis%a D8an(oA

from equipos.forms import EquipoForm def crea_equipo(request): if request.method == 'POST': # peticion POST con formulario relleno form = EquipoForm(request.POST) if form.is_valid(): return HttpResponseRedirect('/gracias/') else: # formulario sin rellenar form = EquipoForm() return render_to_response('crea_equipo.html', {'form': form })
5;

In%&o$ucci'n a D8an(o

Jo&mula&ios

En .lan%illaA

{% extends "base.html" %} {% block contenido %} <form action="." method="POST"> {{ form.as_p }} <input type="submit" value="Guardar equipo" /> </form> {% endblock %}

5=

In%&o$ucci'n a D8an(o

Jo&mula&ios

E8em.lo m*s com.le8o

from django import forms from django.forms.widgets import Textarea class ContactoForm(forms.Form): asunto = models.CharField() email = models.EmailField() edad = models.IntegerField(min_value=0) cuerpo = models.CharField(required=False, widget=Textarea())

5F

In%&o$ucci'n a D8an(o

O%&os com.onen%es

Mi$$le0a&es

>oo1s si%ua$os en%&e %u 0e2 y el naBe(a$o& E8em.los

Cam2io $e i$ioma se(Vn len(ua8e naBe(a$o& O/uscaci'n $e %o$a ocu&&encia $e emails http://docs.djangoproject.com/en/dev/topics/http/middleware/

Cac6

Cac6- en Ba&ios niBeles Wa&ios 2ac1en$sA

memcac6e$7 locmem7 $27 sis%ema $e /ic6e&os 6%%.ANN$ocs.$8an(o.&o8ec%.comNenN$eBN%o.icsNcac6eN


9I

In%&o$ucci'n a D8an(o

O%&os com.onen%es

Au%en%icaci'nNau%o&iEaci'n

Con%ieneA

Rsua&ios7 (&u.os y .e&misos Con%&ola$o&es $e acceso ... 6%%.ANN$ocs.$8an(o.&o8ec%.comNenN$eBN%o.icsNau%6N

I1=N

Li2&e&)a .a&a au%oma%iEa&

Cam2io $e i$ioma Re(ene&aci'n $e ca%*lo(os ... 6%%.ANN$ocs.$8an(o.&o8ec%.comNenN$eBN%o.icsNi1=nN


91

In%&o$ucci'n a D8an(o

O%&os com.onen%es

Se&ialiEaci'n

Ce .e&mi%e (ua&$a& los $a%os a UML

In$e.en$encia $e D Pe&mi%e %es%eo en local Si&Be $e co.ia $e se(u&i$a$ 6%%.ANN$ocs.$8an(o.&o8ec%.comNenN$eBN%o.icsNse&ialiEa%ionN

Sis%ema $e %es%eo

D8an(o %iene miles $e %es%s Cu a.licaci'n .ue$e usa& mismo sis%ema

6%%.ANN$ocs.$8an(o.&o8ec%.comNenN$eBN%o.icsN%es%in(N
9"

In%&o$ucci'n a D8an(o

AVn m*s com.onen%es

Sesiones Se@ales In%e&/aE $e a$minis%&aci'n Sin$icaci'n RSSNA%om Wis%as (en-&icas


94

6%%.ANN$ocs.$8an(o.&o8ec%.comNenN$eBN%o.icsN6%%.NsessionsN

6%%.ANN$ocs.$8an(o.&o8ec%.comNenN$eBN%o.icsNsi(nalsN

6%%.ANN$ocs.$8an(o.&o8ec%.comNenN$eBN&e/Ncon%&i2Na$minN

http://docs.djangoproject.com/en/dev/ref/contrib/syndication/

6%%.ANN$ocs.$8an(o.&o8ec%.comNenN$eBN&e/N(ene&icLBie0sN

#n$ice $e con%eni$os
1. ". 4. 5. 9. .. ;. =.

In%&o$ucci'n a me%o$olo()as *(iles +,u- .e$i& a un /&ame0o&1 0e23 +Es !"EE *(il3 Py%6on7 e8em.lo $e len(ua(e *(il In%&o$ucci'n a D8an(o -emo* desarrollo en -+ango D8an(o 2y e<am.le Re/le<iones /inales

95

Demo $e $esa&&ollo en D8an(o

DEMO

99

#n$ice $e con%eni$os
1. ". 4. 5. 9. :. /. =.

In%&o$ucci'n a me%o$olo()as *(iles +,u- .e$i& a un /&ame0o&1 0e23 +Es !"EE *(il3 Py%6on7 e8em.lo $e len(ua(e *(il In%&o$ucci'n a D8an(o Demo7 $esa&&ollo en D8an(o -+ango b( e0ample Re/le<iones /inales

9:

D8an(o 2y e<am.le

E8em.lo a analiEa&A We2 $e Oaco


6%%.ANN000.yaco.esN Desa&&olla$a 1IIY en D8an(o Juncionali$a$es a mos%&a&


Im.lemen%aci'n (ene&al A(&e(aci'n RSS E$i%o& inline Mi$$le0a&e Cac6C'$i(o D8an(o &esul%an%e Resul%a$o /inal

An*lisis

9;

D8an(o 2y e<am.le

P*(ina inicial
6%%.ANN000.yaco.esN

9=

D8an(o 2y e<am.le

Wi$a en Oaco
6%%.ANN000.yaco.esNnoso%&osNBi$aZenZyacoN

9F

D8an(o 2y e<am.le

Comuni$a$
6%%.ANN000.yaco.esNcommuni%yNac%uali$a$N

:I

#n$ice $e con%eni$os
1. ". 4. 5. 9. :. ;. 1.

In%&o$ucci'n a me%o$olo()as *(iles +,u- .e$i& a un /&ame0o&1 0e23 +Es !"EE *(il3 Py%6on7 e8em.lo $e len(ua(e *(il In%&o$ucci'n a D8an(o Demo7 $esa&&ollo en D8an(o D8an(o 2y e<am.le 2efle0iones finales

:1

Re/le<iones /inales

Re/le<iones /inales

+Es necesa&io &e.lan%ea&se el .&oceso $e $esa&&ollo $e a.licaciones 0e23 +!"EE es siem.&e una 2uena elecci'n .a&a el $esa&&ollo 0e23 +Son los en%o&nos come&ciales &ealmen%e %an .&o$uc%iBos como .&ome%en sus /a2&ican%es3 +Al(Vn $)a Be&emos el l)mi%e $e .osi2ili$a$es ?ue %&ae D8an(o3
:"

+Du$as3 +Su(e&encias3

G&acias .o& la a%enci'n[

:4

You might also like