News

Piccolo contributo per rinnovo abbonamento hosting: http://www.python-it.org/forum/index.php?topic=10331.0

Topic: Link in Django  (Letto 645 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline saxsurfer

  • python habilis
  • **
  • Post: 52
  • Punti reputazione: 0
    • Mostra profilo
Link in Django
« il: Dicembre 31, 2015, 00:29 »
ciao a tutti, vorrei che mi risolveste un dubbio "estetico":
volendo creare un link a una pagina, con Django qual'è il metodo migliore (o più appropriato)?

la pagina a cui vogliamo linkare è il template nuova_pagina.html, che fa sempre parte del nostro sito

Supponendo di essere nella home page, potrei scrivere:

  • Clicca <a href="nuova_pagina.html">qui</a>
    in modo che l'html mi mandi direttamente alla nuova pagina (ma trovo che sia assolutamente sbagliato)
  • Clicca <a href="/nuova_pagina">qui</a>
    che attraverso urls.py carica la vista corrispondente che risponde con il render della nuova pagina; è la soluzione che credo più corretta e che sto utilizzando attualmente
  • Clicca <a href="{% url 'myapp:nuova_pagina' %}">qui</a>
    di cui ho appena scoperto l'esistenza: è forse più corretta della sintassi precedente?

grazie

Online RicPol

  • python sapiens sapiens
  • ******
  • Post: 2567
  • Punti reputazione: 9
    • Mostra profilo
Re: Link in Django
« Risposta #1 il: Dicembre 31, 2015, 09:58 »
non è un fatto estetico. linkare a un'altra view si fa con il lookup della url, punto. E' la ragion d'essere stessa di uno strumento come django. Se ti metti a hard-codare il link nel template, allora fai prima a fare un sito statico in html (e faresti anche meglio, perché prima o poi quel link hard-codato in django restituirà un 404).
E già che ci siamo: un template non si riferisce a una "pagina" (salvo in casi particolari e tutto sommato noiosi, come una pagina statica. E comunque, se lavori in django, anche le pagine statiche devi lasciarle gestire a django, sennò fai un'insalata russa), si riferisce semmai a una o più view, che sono cose molto ma molto ma molto diverse.

Sbaglierò ma l'impressione è che, se ti viene un dubbio come questo, forse ti manca un po' di visione generale su cos'è django, a cosa servono e come funzionano gli strumenti come django.

Offline saxsurfer

  • python habilis
  • **
  • Post: 52
  • Punti reputazione: 0
    • Mostra profilo
Re: Link in Django
« Risposta #2 il: Gennaio 10, 2016, 21:19 »
Ciao Ric,
sicuramente non sono uno con le idee chiare in questo campo, ma non me ne faccio un cruccio.
Da quanto capisco dalla tua risposta, la soluzione alla mia domanda é il sistema 2, quello che uso attualmente. Ti assicuro che nonostante questo, se leggessi il mio Django perderesti i capelli...
  :batti5:

Online RicPol

  • python sapiens sapiens
  • ******
  • Post: 2567
  • Punti reputazione: 9
    • Mostra profilo
Re: Link in Django
« Risposta #3 il: Gennaio 11, 2016, 11:43 »
mah, siccome non devo leggere il tuo codice, i miei capelli sono più o meno salvi. Mi preoccuperei di più per i capelli (e i dati, e i soldi, etc) di chi deve usare il codice che scrivi.
Il problema sarebbe avere almeno una grossolana idea di cosa fa django, e come lo fa, rispetto al concetto tradizionale del sito statico in html. Se non hai capito che in django non esistono "pagine" e "url" definite una volta per sempre, allora sei molto fuori strada mi sa, e a questo punto i dettagli operativi poco importano.

Che poi, intendiamoci: non è che usare django (o flask etc) sia obbligatorio, anzi. Se hai un sito di poche pagine (anche poche decine di pagine) che cambiano relativamente poco, che non hanno bisogno di visualizzare dati in modo particolarmente dinamico... ti conviene _veramente_ farti un sito statico in html puro. Hai meno stack tecnologico, è più veloce, hai più possibilità di hosting, non sei legato a tecnologie specifiche... Se usi django per fare un sito con dieci pagine fisse (home, chi siamo, dove siamo, i nostri servizi, contattaci), allora stai usando lo strumento sbagliato.

Anche molti siti "pseudo-dinamici" francamente non hanno molto senso in django. Prendi un personal blog, per esempio. Hai degli articoli che aggiungi man mano, dei topic (magari dei tag), e un archivio per mese. Certo, django potrebbe generarti gli indici dei tag e degli archivi in automatico. Ma se aggiungi un post ogni quindici giorni, e hai un bacino di massimo una ventina di tag... boh, francamente, fai prima ad aggiornare a mano due o tre pagine html statiche ogni volta che scrivi un nuovo post. In questi casi, volendo usare un framework per semplificarsi un po' la vita, consiglio piuttosto un generatore di siti statici come Pelican: lavori in locale, Pelican sputa fuori tutte le pagine html statiche di cui hai bisogno, e tu le carichi sul tuo server... Molto più comodo ed efficiente di mettere in piedi un database, un'installazione di django, il codice necessario...

Morale, se usi django e/o altri framework dinamici, cerca di farti un'idea di qual è il loro reale ambito applicativo.

Offline saxsurfer

  • python habilis
  • **
  • Post: 52
  • Punti reputazione: 0
    • Mostra profilo
Re: Link in Django
« Risposta #4 il: Marzo 01, 2016, 23:36 »
ok, grazie. sicuramente django è un po' troppo per quella che è la dimensione del mio sito. Però ho l'ambizione di fare qualcosa di un po' più evoluto di un sito solo html, quindi ci sto lavorando.
Inoltre ho un applicazione scritta in Python che fa un po' di calcoli e quindi ho comunque bisogno di un hosting che lo supporti; inoltre voglio regolare gli accessi con utenti e password, per cui mi serve appoggiarmi a un database.
ciao