I lettori come te aiutano a sostenere MUO. Quando effettui un acquisto utilizzando i link sul nostro sito, potremmo guadagnare una commissione di affiliazione.

Senza il routing dinamico, la navigazione nelle pagine Web sarebbe difficile. Dovresti digitare il percorso completo di ogni pagina che visiti sul browser. Che terribile esperienza utente.

Gli Uniform Resource Locator (URL) dinamici consentono di navigare tra le diverse pagine di un'app con il clic di un pulsante. Django semplifica la progettazione di URL dinamici. Ha un modulo di configurazione URL (URLconf) che collega le espressioni URL alle viste.

Tutto il codice in URLconf è in sintassi Python, semplificando la creazione di URL dinamici. Impariamo di più sugli URL dinamici costruendo un progetto Django.

1. Crea un progetto Django

Primo, creare un progetto Django e applicazione (app).

Assegna un nome alla tua app Boma-orologio. L'app raccoglierà la posizione, la descrizione e i numeri dei residenti di vari quartieri. Crea un modello denominato

instagram viewer
Quartiere. Usa il modello per aggiungere informazioni sui quartieri in un database. Impara come creare modelli in Django e il database se non si ha familiarità.

Successivamente, crea una funzione di visualizzazione per i quartieri.

2. Crea una funzione di visualizzazione

In Django, le viste sono funzioni Python che accettano richieste HTTP e restituiscono risposte. Su una pagina Web alimentata da Django, le visualizzazioni eseguono vari compiti e missioni.

Per eseguire una vista, devi chiamarla tramite un URL. Un URL è un percorso univoco a una risorsa sul Web. La risorsa può essere una pagina HTML, un'immagine o un endpoint API.

Crea un URL che recuperi i dati del quartiere in base ai parametri passati. Per farlo, puoi usare il chiave primaria (pk) O Identificazione (identificativo) per recuperare le informazioni. Utilizzerai un modello per farlo.

È possibile creare viste definendole in un file chiamato viste.py nella cartella dell'app. Inizia importando il file rendere funzione da Django per visualizzare i dati all'URL. Importa anche il file Quartiere modello da modelli.py.

da django.scorciatoie importare rendere
da .Modelli importare Quartiere

Successivamente, crea una funzione di visualizzazione denominata casa che mostra tutti i quartieri sul modello di casa. IL NeighborHood.objects.all() La funzione riceve i dati per tutti i quartieri dal database.

defcasa(richiesta):
quartieri = NeighbourHood.objects.all()
reso reso (richiesta, "home.html", {'quartieri':quartieri})

Inoltre, crea una funzione di visualizzazione per join_hood che visualizzerà le informazioni di un quartiere. IL NeighbourHood.objects.get (id=id) la funzione richiede i dati in base all'ID. Le informazioni vengono quindi visualizzate su un modello.

defjoin_hood(richiesta, documento d'identità):
quartiere = NeighbourHood.objects.get (id=id)
reso reso (richiesta, 'join_hood.html', {'quartiere':quartiere})

In seguito, quando navigherai in un quartiere, potrai vedere le informazioni del suo profilo.

3. Crea un URL dinamico

Ora puoi creare un URL dinamico per la funzione di visualizzazione che hai creato.

da django.urls importare sentiero
da. importare visualizzazioni
da django.conf importare impostazioni
da django.conf.urls.static importarestatico
dadjango.contrib.staticfiles.urlimportarestaticfiles_urlpatterns

schemi URL = [
sentiero ('casa', views.home, nome='casa'),
sentiero ('join_hood/<str: id>/', views.join_hood, nome='join_hood'),
]

Seimpostazioni.DEBUG:
modelli URL += statico(impostazioni. MEDIA_URL, document_root = impostazioni. MEDIA_ROOT)

Importare sentiero dagli URL Django per creare percorsi per la vista. Quindi importare le funzioni di visualizzazione da viste.py.

IL join_hood L'URL ha un segnaposto tra parentesi angolari:. Questo cattura quella parte dell'URL e la invia alla vista.

Le parentesi angolari di solito includono una specifica del convertitore. La specifica può essere una stringa (str) o un numero intero (int). Django offre anche lumaca, sentiero, O identificatori univoci universali (uuido). La specifica limita il tipo di variabile o il numero di caratteri passati nell'URL alla vista.

Dare un nome agli URL aiuterà a identificarli sui modelli.

IL statico E file statici imports visualizza i file statici nei percorsi URL. Scopri di più su come strutturare i parametri URL nel file official Django documentazione.

4. Aggiungi URL a un modello

Dopo aver aggiunto la funzione di visualizzazione all'URL, creare un modello HTML per visualizzare i dati. Dai un nome al modello join_hood.html.

{% estende "base.html" %}

{% carico statico %}

{% blocca contenuto %}
<classe div="scheda mb-3" stile="max-width: adatta il contenuto;">
<classe div="riga g-0">
<classe div="col-md-4">
<classe div="col-md-8">
<classe div="corpo della carta">
<classe h5="titolo della carta"> Benvenuto!</h5>
<classe p="testo-carta pt-4"> Nome: {{quartiere.nome}}</P>
<classe p="testo-carta pt-4"> Località: {{neighbourhood.location}}</P>
<classe p="testo-carta pt-4"> Descrizione: {{quartiere.descrizione}}</P>
<classe p="testo-carta pt-4"> Telefono sanitario:{{neighbourhood.health_tell}}</P>
<classe p="testo-carta pt-4"> Numero della polizia: {{neighbourhood.police_number}}</P>
<classe p="testo-carta pt-4"> Residenti: {{quartiere. Contare}}</P>
</div>
</div>
</div>
</div>
</div>
{% blocco finale %}

Crea il join_hood modello nella cartella dell'app per visualizzare i dati del quartiere. Innanzitutto, estendi il file base.html template con fogli di stile (bootstrap) che utilizzerai per definire lo stile del template. Quindi, esegui il rendering delle variabili che visualizzeranno le informazioni sulla pagina.

Quindi, crea un file home.html modello in cui visualizzerai tutti i quartieri.

{% estende 'base.html' %}

{% carico statico %}

{% blocca contenuto %}
<classe div="contenitore" stile="colore nero;">
<img src="{{quartiere.hood_logo.url}}" classe="carta-img-top" alternativo="{{utente.quartiere.nome}}">

<classe div="riga">
{% per quartiere nei quartieri %}
<classe div="col-md-4">
<classe div="scheda mb-4" stile="altezza minima: 340px">
<img src="{{quartiere.hood_logo.url}}" classe="carta-img-top" alternativo="{{user.hood.name}}">

<classe div="corpo della carta">
<classe h5="titolo della carta">
{{quartiere.nome}}
({{quartiere.posizione}})
<classe span="ml-4">{{quartiere. Count}} membri{{neighbourhood.members.count|pluralize}}</span>
</h5>

<classe p="testo-carta">{{quartiere.descrizione}}</P>
<classe p="testo-carta">{{quartiere.membro. Contare}}</P>

<a href="{% URL 'join_hood' quartiere.id %}" classe="btn btn-primario btn-sm">Unisciti a Hood</UN>
</div>
</div>
</div>
</div>
</div>
{% blocco finale %}

Nella home page, esegui il rendering di tutte le informazioni che desideri visualizzare sui quartieri. Aggiungerai un pulsante e un tag di ancoraggio sulla home page. Il tag di ancoraggio ha l'URL nome E ID quartiere.

Quando si fa clic, il pulsante si sposta nelle vicinanze di quell'ID. Il modello home viene visualizzato nell'URL http://127.0.0.1:8000/home/. L'immagine qui sotto mostra questa pagina:

5. Prova il routing dinamico

Ora puoi verificare se il routing dinamico funziona sul modello. Quando fai clic sul unisciti a cappuccio pulsante, Naviga al join_hood modello. IL join_hood Il modello mostra le informazioni sul profilo del quartiere selezionato.

Vedrai anche l'ID del quartiere visualizzato nell'URL del browser http://127.0.0.1:8000/join_hood/2/

Apparirà come mostrato di seguito:

Congratulazioni! Hai creato un URL dinamico.

Perché utilizzare gli URL Django?

Gli URL dinamici sono una caratteristica importante nelle applicazioni web. Django semplifica la progettazione di URL in base alle tue esigenze. Rimuove le limitazioni che potresti associare ad altri framework.

Il modulo URLconf è pieno di risorse che supportano la creazione di URL Django. Inoltre, semplifica la pubblicazione di file statici sui modelli e migliora la gestione degli errori.

Django ha altre funzionalità progettate per ottimizzare le applicazioni back-end. Automatizza l'autenticazione degli utenti, l'amministrazione dei contenuti e le mappe dei siti, tra le altre funzionalità.