Presentazione django reminiscence

462 views

Published on

Una piccola guida su come usare Django nello sviluppo del progetto Reminiscence

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
462
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Presentazione django reminiscence

  1. 1. DJANGOprogetto Reminiscence di Andrea Gottardi
  2. 2. Introduzione• Breve spiegazione degli elementi principali• Trattazione più completa sul repository del progetto (GitHub)• http://github.com/AndreaGot/reminiscence
  3. 3. Introduzione• La base di Django sono i progetti (projects)• All’interno di essi trovano spazio le applicazioni (apps), che contengono le funzionalità• Un progetto può avere tante apps
  4. 4. Per cominciare• file settings.py• file manage.py• cartella main
  5. 5. file settings.py• Impostazioni base• Ci interessa (praticamente) solo il database• Altre impostazioni di importanza secondaria• Sconsigliato l’editing di questo file
  6. 6. file manage.py• Contiene servizi essenziali per il progetto python manage.py comando• Esempi di comandi: • dbshell • runserver • shell • syncdb
  7. 7. dbshell• Si accede a una shell sqlite3 per inserire query SQL direttamente nel database• Importante conoscere bene la struttura delle tabelle• consigliato l’utilizzo di un editor visuale, oppure del comando shell
  8. 8. runserver• Con questo comando si lancia il server bsato sul nostro progetto• una volta lanciato ci si connette digitando localhost:8000/main/• vari URL secondari a cui accedere
  9. 9. runserver - URL• localhost:8000/main/ - home page• localhost:8000/main/account - creazione• localhost:8000/main/login - login• localhost:8000/main/add - aggiunta ricordo• ce ne sono altri, ma sono “di servizio”
  10. 10. shell• Si accede a una shell iPython dove poter sperimentare le API del progetto• utile per testare il funzionamento delle API prima di implementarle
  11. 11. shell - API • Servono per poter operare con le tabelle del database senza scrivere nemmeno una riga di SQL • Funzionano dopo opportuno import della tabella prescelta:from reminiscence.main.models import Nome
  12. 12. shell - API Nome.objects.get(cond)•Consente di prelevare dalla tabella Nome il recordcorrispondente alla condizione•Questa API prevede il ritorno di un solo record (usarecondizioni univoche)•Per evitare l’errore da record non trovato serve unafunzione specifica
  13. 13. shell - API Nome.objects.filter(cond)•Consente di prelevare dalla tabella Nome una listadi record corrispondenti alla condizione•Per evitare l’errore da record non trovato serve unafunzione specifica
  14. 14. shell - API n = Nome(campo1,valore1,campo2,valore2, ...)• crea un’istanza di un record della tabella• sono obbligatori solo i collegamenti alle FK• il record NON è ancora salvato. Per farlo bisogna eseguire il seguente comando: n.save()
  15. 15. shell - API n.campoX = valoreX• siccome n è un’istanza, la si può modificare come un qualsiasi oggetto• buona norma salvare l’istanza creata prima, poi in caso modificare i dati in questo modo. Non dimenticate di salvare i dati con: n.save()
  16. 16. syncdb• comando già eseguito in sede di creazione• salva le tabelle sul database• prende le classi del file models.py (che vedremo dopo) e le converte in tabelle
  17. 17. cartella main• L’applicazione reminiscence vera e propria• Il progetto ha le impostazioni “generali”, l’applicazione ha le caratteristiche specifiche• i file modificabili si trovano qui
  18. 18. cartella main• file models.py• cartella static• cartella templates• file urls.py• file views.py
  19. 19. file models.py• contiene classi python• crea la struttura delle tabelle• viene interpretato dal comando syncdb
  20. 20. file models.py - strutturaclass Regione(models.Model): regione = models.CharField(max_length=80) def __unicode__(self): return str(self.regione)
  21. 21. file models.py - struttura• CharField è l’equivalente del tipo SQL char• la funzione __unicode__ serve per rappresentare il dato in maniera leggibile
  22. 22. cartella static• contiene, come dice il nome, file statici• contiene file che concorrono a creare i templates• in generale vengono inseriti qui file css e js
  23. 23. cartella templates• contiene solo pagine HTML• queste pagine formeranno le pagine web che visualizzeremo• il template NON è la pagina web che il browser fa vedere
  24. 24. templates - struttura• I template sono scritti in HTML• eventuali script e fogli di stile sono in static• vengono resi dinamici tramite l’inserimento di opportuni tag
  25. 25. templates - tag Django {{variabile}}• Inserisce il valore di una variabile {{% comando %}}• Esegue un comando python (e.g. for)
  26. 26. urls.py• contiene una serie di stringhe, ognuna delle quali conduce a una pagina url(r^add/, views.add, name=add),
  27. 27. urls.py - struttura• r’^add/’ e l’indirizzo a cui si troverà la pagina• views.add è il nome della view da chiamare• name è il nome a cui riferirsi nel codice
  28. 28. urls.py• Le pagine vengono visualizzate secondo un processo ben preciso• Verrà spiegato alla fine, una volta appresi tutti i componenti
  29. 29. views.py• Contiene funzioni python• a metà strada tra URLs e templates• Una view viene chiamata da un url• in quanto funzione, può essere solo ausiliaria
  30. 30. views.py - strutturaef add(request): [...] return render(request, main/aggiungi/aggiungiRicordo.html)
  31. 31. views.py - struttura• request è un dizionario di valori che la chiamante passa alla view• render è una funzione che trasforma il template in pagina statica• i tag citati prima vengono tradotti in HTML
  32. 32. rendering• Utente (o form HTML) chiama URL• URL chiama view• view effettua il render del template• per questo <a href [...]> non funziona• utilizzare {% url ‘main:NomeUrl’ %}
  33. 33. COME FACCIO PER..
  34. 34. modificare template?• È sufficiente conoscere alcuni tag HTML• Nelle pagine più articolate è necessario, più che il codice HTML, modificare JS e CSS
  35. 35. creare un URL? url(r^xxx/, views.yyy, name=zzz),• è sufficiente inserire nel file urls.py una riga aggiuntiva con la stringa qui sopra• xxx e zzz devono essere univoci• yyy deve esistere (altrimenti l’url non va)
  36. 36. creare una view?• basta aggiungere una funzione python nel file views.py• la funzione può fare qualsiasi cosa• usare print solo per debug• si possono usare le API, con alcune aggiunte
  37. 37. creare una view?• Se la view è chiamata da una pagina web è possibile raccogliere i dati inseriti in input a = request.POST.get(‘nomeform’)• i dati devono essere passati con metodo POST (specificato nella form HTML)
  38. 38. creare una view?• La view deve concludersi sempre con il ritorno della render• ovviamente deve esistere il template al quale la view si riferisce• Le view sono solo le funzioni che ritornano pagine web
  39. 39. ATTENZIONE• per rendere le pagine interattive non bastano queste informazioni• è necessario procedere con altri metodi (JavaScript, AJAX...)

×