Inici de sessió d'usuari


Capítol 1: Introducció a Django


Si aneu al lloc web djangoproject.com utilitzant el vostre navegador -- o, depenent de la dècada en la que esteu llegint aquest text literari destinat-a-ser-intemporal, utilitzant el vostre telèfon mòbil, agenda electrònica, o qualsevol altres giny per accedir a Internet -- trobaràs aquesta explicació:

"Django és un marc-de-treball web d'alt nivell de python que encoratja un desenvolupament de disseny pragmàtic ràpid i clar.

Això és una queixalada -- o un cop d'ull, depenent de si aquest llibre està recitat, llegit en paper o projectat en el teu Jumbotron.

Deslloriguem-ho a continuació.

Django és un marc-de-treball web d'alt nivell de python...

Un marc-de-treball web d'alt nivell és un programari que facilita la dificultat de construir llocs web dinàmics. Aquest abstreu problemes comuns del desenvolupament web i proporciona dreceres per a les tasques més freqüents de programació.

Fer caritat, un lloc web dinàmic és aquell en que les pàgines no són només documents HTML situats en un qualsevol sistema de fitxers d'un servidor. En un lloc web dinàmic, que, cada pàgina és generada per un programa d'ordinador -- anomenada "aplicació web" -- que tu, el desenvolupador web, has creat. Una aplicació web pot, per exemple, retornar registres des d'una base de dades o fer una acció basada en les entrades d'un usuari.

Un bon marc-de-treball web tracta aquestes preocupacions comuns:

  • Proporciona un mètode per mapejar les peticions de les URL a codi que les tracti. En altres paraules, t'ofereix una forma de dissenyar quin codi ha d'executar-se per a cada URL. Per exemple, podries dir al marc-de-treball. "Per a les URL com aquestes /users/joe/, executa el codi que mostra el perfil per a l'usuari amb aquest nom."
  • Fa que sigui fàcil mostrar, validar i tornar a mostrar formularis HTML. Els formularis HTML són la principal forma per obtenir dades d'entrada dels usuaris de la web, així un marc-de-treball web està més ben fet per la facilitat de mostrar-los i manipular el codi per mostrar formularis, tornar-los a mostrar (amb els errors ressaltats).
  • Converteix les entrades enviades pels usuaris en estructures de dades que poden ser manipulades convenientment. Per exemple, el marc-de-treball podria convertir formularis HTML enviats dins de tipus de dades nadiues del llenguatge de programació que estàs utilitzant.
  • Ajuda a separar el contingut de la presentació via un sistema de plantilles, així pots canviar l'aparença del teu lloc sense que afecti al teu contingut, i viceversa.
  • S'integra convenientment amb les capes d'emmagatzemament -- com bases de dades -- però no necessàriament cal que s'usi una base de dades.
  • Fa que la teva feina sigui més productiva, a un nivell d'abstracció més alt, que si ho codifiquessis, diguem, amb HTTP. Però no t'impedeix que baixis un nivell de l'abstracció quan ho necessitis.
  • Fes-ho a la teva manera, oblidant-te de deixar les taques en la teva aplicació com les URL que contenen ".aspx" o ".php".

Django fa totes aquestes coses bé -- i introdueix un nombre de característiques que aixequen el nivell del que un marc-de-treball web hauria de fer.

El marc-de-treball està escrit en Python, un llenguatge de programació d'alt nivell, maco, concís, potent. Per desenvolupar un lloc utilitzant Django, has d'escriure codi Python que utilitza les llibreries de Django. Encara que aquest llibre no inclou un tutorias complet de Python, mostra les característiques i funcionalitats de Python quan sigui necessari, particularment quan el codi no té un sentit evident.

... que encoratja un desenvolupament ràpid ...

Sense tenir en compte quantes característiques potents té, un marc-de-treball web no té valor si no t'estalvia temps. La filosofia de django és fer tot lo possible per facilitar-te el desenvolupamet hiper-ràpid. Amb Django, fas llocs web en poques hores, no dies; setmanes o anys.

És possible que s'hagi d'agrair-ho al propi Python. Oh, Python, com ens agradades, mireu-ho en aquests punts:

  • Python és un llenguatge interpretat, que vol dir que no cal compilar codi. Només escriure els teus programes i executar-los. En el desenvolupament web, això vol dir que pots desenvolupar codi i immediatament veure'n els resultats per "recarregar" en el teu navegador web.
  • Python té tipus dinàmics, que vol dir que no t'has de preocupar sobre la declaració dels tipus de dades per les teves variables.
  • La sintaxi de python és concisa i expressiva, el qual significa que necessita menys codi per acomplir la mateixa tasca que en altres, més prolífic, com Java. Una línia de python normalment equival a 10 linies de Java. (Això té la banda positiva: Menys línies de codi signifiquen menys errors).
  • Python ofereix unes característiques potents d'introspecció i meta-programació, que fan que sigui possible inspeccionar i afegir característiques als objectes en temps d'execució.

Més enllà dels avantatges de la productivitat inherents de Python, el propi Django fa l'esforç per a un desenvolupament ràpid. Cada part del marc-de-treball està dissenyat amb la productivitat en ment. En veurem exemples durant aquest llibre.

... disseny pragmàtic clar

Finalment, Django estrictament manté un disseny net en el seu codi i fa que sigui fàcil de seguir en les aplicacions que creis.

Això significa que si penses que Django és un cotxe, podria ser un cotxe d'esports elegant, capaç no només d'altes velocitats i gir tancats, sinó amb molt kilometratge i amb emissions netes.

La filosofia aquí és: Django fa que sigui fàcil fer coses de manera "correcta".

Específicament, Django encoratja en l'acoblament dèbil: la filosofia de programació és que diferents peces de l'aplicació haurien de ser intercanviables i haurien de comunicar-se amb les altres via APIs netes i concises.

Per exemple, el sistema de plantilles o sap res sobre el sistema d'accés a la base de dades, el qual no sap res sobre la capa de petició/resposta HTTP, el qual no sap res sobre la memòria cau. Cadascuna d'aquestes capes són diferents i lleugerament acoblades a la resta. En la pràctica, això vol dir que pots intercanviar i ficar capes quan ho necessites.

Django segueix l'arquitectura "model-vista-controlador" (MVC). Simplement, és la forma de desenvolupar programari en que el codi per definir i accedir a les dades (el model) està separat de la lògica d'empresa (el controlador), que alhora està separada de la interfície d'usuari (la vista)

MVC s'explica millor amb un exemple del que no s'ha de fer. Per exemple, mira el següent codi PHP, que retorna una llista de gent d'una base de dades MySQL i la treu en una pàgina HTML simple. (Si, podríem haver-ho fet com a programadors disciplinats i escriure codi PHP clar; però només utilitzem PHP per il·lustrar aquest punt):

<html>
<head><title>Els meus amics</title></head>
<body> 

<h1>Els meus amics</h1>

<ul> 

<?php 
  $connection = @mysql_connect("localhost", "my_username", "my_pass");
  mysql_select_db("my_database"); 
  $people = mysql_query("SELECT name, age FROM friends"); 
  while ( $person = mysql_fetch_array($people, MYSQL_ASSOC) ) { 
?> 

<li> 
   <?php echo $person['name'] ?> is <?php echo $person['age'] ?> years old. 
</li> 

<?php } ?> 

</ul> 

</body>
</html> 

Encara que aquest codi és conceptualment simple per a novell -- perquè tot està en un únic fitxer -- és una mala pràctica per diverses raons:

  1. La presentació està dins del codi. Si un dissenyador vol editar l'HTML d'aquesta pàgina, ell o ella haurà d'editar aquest codi, perquè el HTML i el PHP estan interconnectats.
  2. El codi de la base de dades està dins a la lògica de l'empresa. Aquest és un problema de redundància: Si canvies el nom de les taules o columnes de la base de dades, hauràs de re-escriure la el codi SQL.
    Per contra, l'aproximació Django/MVC encoratja una única capa d'accés a dades abstracta que es responsabilitza de tots els accessos a dades. En el cas de Django, la capa d'accés a dades coneix els noms de les taules i columnes i et permet que executis peticions SQL via Python sense escriure SQL manualment. Això vol dir, que si canvia el nom de les taules, pots canviar-los en un únic lloc -- la definició del model de dades -- en comptes de en cada petició SQL en tot el codi.
  3. La URL està junt amb el codi. Si aquest fitxer PHP és a /foo/index.php, serà executat per totes les peticions d'aquesta adreça. Però que passa si vol que aquest mateix codi s'executi per peticions a /bar/ i /baz/? Tu hauries d'activar algunes regles rewrite, i no són coses que es manegin amb facilitat.
    En canvi, Django desacobla les URL del codi, així pots canviar les URLs per un tros de codi en particular.
  4. Els paràmetres de connexió a la base de dades i el rerefons són codificats en el codi. Està mal fet haver d'especificar la informació de la connexió -- el servidor, l'usuari i la contrasenya -- dins d'aquest codi, perquè això és configuració, no lògica de programació. Així, aquest exemple codifica que el motor de base de dades és MySQL.
    En canvi, Django té un únic lloc on guardar la configuració, i la capa d'accés a la base de dades està abstret per a que canviar el servidor de base de dades (des de MySQL a PostgreSQL) sigui fàcil.

Que no fa Django

Per descomptat, volem que aquest llibre sigui just i equilibrat. Amb això en ment, hem de ser honestos i escriure que no fa Django:

  • Alimentar al teu gat.
  • Llegir-te del pensament els requeriments dels projecte i implementar-lo en un temps prudencial per enganyar al teu cap que realment ho has fet tu.

Posant-nos més seriosos, Django encara no inverteix els efectes de l'escalfament global.

Perquè s'ha desenvolupat Django?

Django està profundament arrelat als problemes i solucions del Món Real. No s'ha creat per comerciar-lo i vendre'l als desenvolupadors, no s'ha creat com un exercici acadèmic en algun temps perdut. S'ha construït des del Primer Dia per solucionar els problemes diaris per un equip de desenvolupament web de la industria lider.

Va començar a finals del 2003, en un petit diari d'un petit poble a Lawrence, Kansas.

Per una raó o altra, el diari The Lawrence Journal-World dirigit per atreure un grup de talentosos dissenyadors i desenvolupadors web a principis del 2000s. Les operacions web del diari, En Línia a tot el Món, ràpidament va ser uns dels diaris web més innovadors del Món. Aquests tres llocs principasl, LJWorld.com (notícies), Lawrence.com (entreteniment/música) i KUsports.com (esports acadèmics), van començar a guanyar premis en la indústria de premsa digital. Les innovacions van ser moltes, incloent-hi:

  • El major lloc d'entreteniment local del Món, Lawrence.com, que extreu bases de dades d'esdeveniments locals, bandes, restaurants, begudes especials, cançons descarregables i noves històries de format tradicional.
  • Una edició d'estiu del LJWorld.com que tracta les jugadors locals de la Petita Lliga, que estan al New York Yankees.
  • Alertes de partits al telèfons pels partits de futbol americà i basquet de la Universitat de Kansas, que els fans poden rebre les notificacions dels resultats durant el partit, i un segon sistema que utilitza algoritmes d'intel·ligència artificial per a que els fans enviïn missatges de text pla al sistema de consulta de la base de dades ("quants punts ha fet el Barça" o "pts barça").
  • Una gran base de dades per a totes les classificacions de basquet i futbol americà que vulguis, incloent-hi una forma per comparar qualsevol parell de jugadors o equips de la NCAA.
  • Donar blogs als membres de la comunitat. Abans que els blocs estiguessin tant de moda.

Els experts en periodisme de tot el Món han assenyalat que el futur són els diaris digitals. Els negocis del New York Times ha fet història amb els seus mitjans: La radio pública nacional va fer una sèrie que va durar dos dies. El redactor principal, Rob Curley, parla quasi setmanalment en conferències arreu del Món, de les idees innovadores dels llocs web en línia i de les seves característiques. És trist que la vella indústria es resisteixi al canvi, World Online ha estat una excepció.

Molts dels èxits de World Online ha estat motivat per la tecnologia que hi ha darrera els seus llocs, i en la filosofia que els informàtics són tant importants per crear el periodisme del segle XXI que els propis periodistes.

Aquí hi ha el perquè s'ha desenvolupat Django: Els desenvolupadors de World Online necessitaven un marc-de-treball per desenvolupar complexos llocs webs basats en bases de dades, fàcilment i en temps periodístics.

A finals del 2003, dos desenvolupadors de World Online, Adrian Holovaty i Simon Willison, van decidir fer aquest marc-de-treball. Els van decidir utilitzar Python, un llenguatge que ells s'acabaven d'enamorar. Després d'explorar (i tenir decepcions) de les llibreries de programació Web amb Python, ells començaren a crear Django.

Dos anys més tard, a l'estiu del 2005, després d'haver desenvolupat Django fins a un punt on funcionés eficientment en la majoria de llocs web de World Online, l'equip de World Online, que ara incloïa a Jacob Kaplan-Moss, va decidir la bona idea d'obrir el codi del marc-de-treball. D'aquesta forma, ells van tornar a la comunitat de codi obert, van obtenir aportacions gratuïtes de desenvolupadors externs, i van oferir serveis empresarials per al sistema Django. Django fou codi obert el juliol del 2005 i es va fer popular ràpidament.

Encara que Django ara és un projecte de codi obert amb gent que hi contribueix arreu del planeta, els desenvolupadors originals de World Online encara proporcionen la direcció principal per l'ampliació del marc, i World Online hi contribueix en altres aspectes importants com ample de banda, material i temps de dedicació (http://www.djangoproject.com).

Qui utilitza Django?

Els desenvolupadors web arreu del Món que utilitzen Django. Als exemples específics:

  • World Online, per descomptat, continua utilitzant Django per a tots els seus llocs web, tant l'intern com el comercial. Alguns d'aquests llocs fets amb Django són:
  • El lloc web del Washington Post, washingtonpost.com, utilitza Django pels projectes de base de dades i varis trossos de la funcionalitat del lloc. alguns exemples:
  • Chicagocrime.org, una base de dades d'accés lliure dels crims ocorreguts a Chicago i un dels primers ginys fets amb Google Maps, desenvolupats amb Django.
  • Tabblo.com, un lloc innovador per compartir fotografies. El lloc et permet ajuntar trossos de les teves fotos per crear pàgines per crear històries.
  • Texasgigs.com, un lloc de música local de Dallas, Texas, escrit amb Django.
  • Grono.net, un lloc de xarxa-social de Polonia, que va començar a substituir el codi Java per Django. Van trobar que Django no només era més ràpid (i més divertit) per desenvolupar-lo -- sinó que s'executava millor que Java i requeria menys maquinari.
  • Traincheck.com fou desenvolupat per Django. El lloc et permet enviar missatges de text des del teu telèfon mòbil per obtenir els mapes del metro per saber la teva localització

Un llistat de dotzenes de nous llocs que utilitzen Django podeu trobar-los a http://code.djangoproject.com/wiki/DjangoPoweredSites.

Sobre aquest llibre

La finalitat d'aquest llibre és explicar totes les coses que fa Django -- i fer-te un expert utilitzant-lo.

Llegint aquest llibre, aprendràs les habilitats necessàries per desenvolupar potents llocs web ràpidament, amb un codi clar i fàcil de mantenir.

Estem contents que continuïs aquí.