Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon.
Uten dynamisk ruting ville det vært vanskelig å navigere på nettsider. Du må skrive inn hele banen til hver side du besøker i nettleseren. For en forferdelig brukeropplevelse.
Dynamic Uniform Resource Locators (URLs), lar deg navigere til forskjellige sider på en app med et klikk på en knapp. Django gjør det enkelt å designe dynamiske URL-er. Den har en URL-konfigurasjonsmodul (URLconf) som kobler URL-uttrykk til visninger.
All kode i URLconf er i Python-syntaks, noe som gjør det enkelt å lage dynamiske URL-er. La oss lære mer om dynamiske URL-er ved å bygge et Django-prosjekt.
1. Lag et Django-prosjekt
Først, lage et Django-prosjekt og applikasjon (app).
Gi appen et navn Boma-klokke. Appen vil samle plassering, beskrivelse og innbyggernummer fra ulike nabolag. Lag en modell som heter Nabolag. Bruk modellen til å legge til informasjon om nabolagene i en database. Lær hvordan lage modeller i Django og databasen hvis du ikke er kjent.
Deretter oppretter du en visningsfunksjon for nabolagene.
2. Opprett en visningsfunksjon
I Django er visninger Python-funksjoner som tar HTTP-forespørsler og returnerer svar. På en nettside drevet av Django utfører visninger varierte oppgaver og oppdrag.
For å utføre en visning må du kalle den via en URL. En URL er en unik bane til en ressurs på nettet. Ressursen kan være en HTML-side, et bilde eller et API-endepunkt.
Opprett en URL som henter nabolagsdata basert på parameterne som er sendt. For å gjøre det kan du bruke primærnøkkel (pk) eller Identifikasjon (id) for å hente informasjonen. Du vil bruke én mal for å gjøre dette.
Du kan opprette visninger ved å definere dem i en fil som heter views.py i appens mappe. Start med å importere gjengi funksjon fra Django for å vise data på URL-en. Importer også Nabolag modell fra models.py.
fra django.snarveier import gjengi
fra .modeller import Nabolag
Deretter oppretter du en visningsfunksjon kalt hjem som viser alle nabolag på hjemmemalen. De NeighborHood.objects.all() funksjon mottar data for alle nabolagene fra databasen.
defhjem(be om):
nabolag = NeighbourHood.objects.all()
returnere gjengivelse (forespørsel, "home.html", {'nabolag':neigborhoods})
Lag også en visningsfunksjon for join_hood som vil vise informasjon om et nabolag. De NeighbourHood.objects.get (id=id) funksjon ber om data i henhold til ID. Informasjonen blir deretter gjengitt på en mal.
defjoin_hood(forespørsel, id):
nabolag = NeighbourHood.objects.get (id=id)
returnere gjengivelse (forespørsel, 'join_hood.html', {'nabolag':nabolag})
Senere, når du navigerer til et nabolag, vil du kunne se profilinformasjonen.
3. Opprett en dynamisk URL
Du kan nå opprette en dynamisk URL for visningsfunksjonen du opprettet.
fra django.urls import sti
fra. import visninger
fra django.conf import innstillinger
fra django.conf.urls.static importstatisk
fradjango.contrib.staticfiler.nettadresserimportstaticfiles_urlpatternsurlpatterns = [
sti ('hjem', views.home, name='hjem'),
sti ('join_hood/<str: id>/', views.join_hood, name='join_hood'),
]
hvisinnstillinger.DEBUG:
urlpatterns += statisk(innstillinger. MEDIA_URL, document_root = innstillinger. MEDIA_ROOT)
Import sti fra Django-URL-er for å lage baner for visningen. Importer deretter visningsfunksjonene fra views.py.
De join_hood URL har en plassholder i vinkelparenteser:. Dette fanger opp den delen av URL-en og sender den til visningen.
Vinkelbrakettene inkluderer vanligvis en omformerspesifikasjon. Spesifikasjonen kan enten være en streng (str) eller heltall (int). Django tilbyr også snegl, sti, eller universelt unike identifikatorer (uuid). Spesifikasjonen begrenser typen variabel eller antall tegn som sendes i URL-en til visningen.
Å gi nettadressene et navn vil hjelpe til med å identifisere dem på malene.
De statisk og statiske filer importerer statiske displayfiler på URL-banene. Finn ut mer om hvordan du strukturerer URL-parametere i den offisielle Django dokumentasjon.
4. Legg til URL til en mal
Når du har lagt til visningsfunksjonen i URL-en, oppretter du en HTML-mal for å vise dataene. Du navngir malen join_hood.html.
{% strekker "base.html" %}
{% belastning statisk %}
{% blokker innhold %}
<div klasse="kort mb-3" stil="max-width: passe innhold;">
<div klasse="rad g-0">
<div klasse="col-md-4">
<div klasse="col-md-8">
<div klasse="kort-kropp">
<h5 klasse="kort-tittel"> Velkommen!</h5>
<p klasse="kort-tekst pt-4"> Navn: {{neigghbourhood.name}}</s>
<p klasse="kort-tekst pt-4"> Sted: {{neighbourhood.location}}</s>
<p klasse="kort-tekst pt-4"> Beskrivelse: {{neighbourhood.description}}</s>
<p klasse="kort-tekst pt-4"> Helse Tlf:{{neighbourhood.health_tell}}</s>
<p klasse="kort-tekst pt-4"> Politinummer: {{neighbourhood.police_number}}</s>
<p klasse="kort-tekst pt-4"> Beboere: {{nabolaget. Telle}}</s>
</div>
</div>
</div>
</div>
</div>
{% sluttblokk %}
Opprett join_hood mal i app-mappen for å vise nabolagsdataene. Forleng først base.html mal med stilark (bootstrap) som du skal bruke til å style malen. Gjengi deretter variablene som viser informasjonen på siden.
Deretter oppretter du en home.html mal hvor du vil vise alle nabolag.
{% strekker 'base.html' %}
{% belastning statisk %}
{% blokker innhold %}
<div klasse="container" stil="farge svart;">
<img src="{{neighborhood.hood_logo.url}}" klasse="kort-img-topp" alt="{{user.neighborhood.name}}"><div klasse="rad">
{% for nabolag i nabolag %}
<div klasse="col-md-4">
<div klasse="kort mb-4" stil="min-høyde: 340px">
<img src="{{neighborhood.hood_logo.url}}" klasse="kort-img-topp" alt="{{user.hood.name}}"><div klasse="kort-kropp">
<h5 klasse="kort-tittel">
{{neigborhood.name}}
({{neigborhood.location}})
<span klasse="ml-4">{{nabolag. Count}} medlem{{neighborhood.members.count|pluralize}}</span>
</h5><p klasse="kort-tekst">{{neighborhood.description}}</s>
<p klasse="kort-tekst">{{neigborhood.member. Telle}}</s>
<a href="{% url 'join_hood' nabolag.id %}" klasse="btn btn-primær btn-sm">Bli med Hood</en>
</div>
</div>
</div>
</div>
</div>
{% sluttblokk %}
På hjemmesiden gjengir du all informasjonen du vil vise om nabolagene. Du vil legge til en knapp og en anker-tag på hjemmesiden. Ankertaggen har URL-en Navn og nabolags-ID.
Når du klikker på knappen, navigerer knappen til nabolaget til den ID-en. Hjemmalen vises på URL-en http://127.0.0.1:8000/home/. Bildet nedenfor viser denne siden:
5. Test dynamisk ruting
Nå kan du teste om den dynamiske rutingen fungerer på malen. Når du klikker på bli med hette knappen, den navigerer til join_hood mal. De join_hood malen viser profilinformasjon om nabolaget du valgte.
Du vil også se ID-en til nabolaget vist på nettleserens URL http://127.0.0.1:8000/join_hood/2/
Det vil vises som vist nedenfor:
Gratulerer! Du har opprettet en dynamisk URL.
Hvorfor bruke Django-URLer?
Dynamiske URL-er er en viktig funksjon i nettapplikasjoner. Django gjør det enkelt å designe URL-er i henhold til dine behov. Det fjerner begrensningene du kan knytte til andre rammeverk.
URLconf-modulen er full av ressurser som støtter Django URL-oppretting. Det gjør det også enklere å servere statiske filer på maler og forbedrer feilhåndteringen.
Django har andre funksjoner designet for å optimalisere backend-applikasjoner. Den automatiserer blant annet brukerautentisering, innholdsadministrasjon og nettstedskart.