Læsere som dig hjælper med at støtte MUO. Når du foretager et køb ved hjælp af links på vores websted, kan vi optjene en affiliate-kommission.

Uden dynamisk routing ville det være svært at navigere på websider. Du skal indtaste den fulde sti til hver side, du besøger i browseren. Hvilken forfærdelig brugeroplevelse.

Dynamic Uniform Resource Locators (URL'er), giver dig mulighed for at navigere til forskellige sider på en app med et klik på en knap. Django gør det nemt at designe dynamiske URL'er. Den har et URL-konfigurationsmodul (URLconf), der forbinder URL-udtryk til visninger.

Al kode i URLconf er i Python-syntaks, hvilket gør det nemt at oprette dynamiske URL'er. Lad os lære mere om dynamiske URL'er ved at bygge et Django-projekt.

1. Opret et Django-projekt

Først, oprette et Django-projekt og applikation (app).

Navngiv din app Boma-ur. Appen vil indsamle placering, beskrivelse og beboernumre fra forskellige kvarterer. Opret en model med navnet Kvarter. Brug modellen til at tilføje oplysninger om kvartererne i en database. Lær hvordan

instagram viewer
skabe modeller i Django og databasen, hvis du ikke er bekendt.

Lav dernæst en udsigtsfunktion for kvartererne.

2. Opret en visningsfunktion

I Django er visninger Python-funktioner, der tager HTTP-anmodninger og returnerer svar. På en webside drevet af Django udfører visninger forskellige opgaver og missioner.

For at udføre en visning skal du kalde den via en URL. En URL er en unik sti til en ressource på nettet. Ressourcen kan være en HTML-side, et billede eller et API-slutpunkt.

Opret en URL, der henter nabolagsdata baseret på de beståede parametre. For at gøre det kan du bruge primær nøgle (pk) eller Identifikation (id) for at hente oplysningerne. Du skal bruge én skabelon til at gøre dette.

Du kan oprette visninger ved at definere dem i en fil kaldet views.py i appens mappe. Start med at importere gengive funktion fra Django til at vise data på URL'en. Importer også Kvarter model fra models.py.

fra django.genveje importere gengive
fra .modeller importere Kvarter

Opret derefter en visningsfunktion med navnet hjem der viser alle kvarterer på boligskabelonen. Det NeighborHood.objects.all() funktion modtager data for alle kvarterer fra databasen.

defhjem(anmodning):
kvarterer = NeighbourHood.objects.all()
returnere gengivelse (anmodning, "home.html", {'kvarterer':kvarterer})

Opret også en visningsfunktion til join_hood der vil vise et kvarters information. Det NeighbourHood.objects.get (id=id) funktion anmoder om data i henhold til ID. Informationen gengives derefter på en skabelon.

defjoin_hood(anmodning, id):
nabolag = NeighbourHood.objects.get (id=id)
returnere gengivelse (anmodning, 'join_hood.html', {'kvarter':kvarter})

Senere, når du navigerer til et kvarter, vil du kunne se dets profiloplysninger.

3. Opret en dynamisk URL

Du kan nu oprette en dynamisk URL til den visningsfunktion, du har oprettet.

fra django.urls importere sti
fra. importere visninger
fra django.conf importere indstillinger
fra django.conf.urls.static importerestatisk
fradjango.bidrag.staticfiler.webadresserimporterestaticfiles_urlpatterns

urlpatterns = [
sti ('hjem', views.home, name='hjem'),
sti ('join_hood/<str: id>/', views.join_hood, navn='join_hood'),
]

hvisindstillinger.FEJLFINDE:
urlmønstre += statisk(indstillinger. MEDIA_URL, document_root = indstillinger. MEDIA_ROOT)

Importere sti fra Django URL'er for at oprette stier til visningen. Importer derefter visningsfunktionerne fra views.py.

Det join_hood URL har en pladsholder i vinkelparenteser:. Dette fanger den del af URL'en og sender den til visningen.

Vinkelbeslagene inkluderer normalt en konverterspecifikation. Specifikationen kan enten være en streng (str) eller heltal (int). Django tilbyder også snegl, sti, eller universelt unikke identifikatorer (uuid). Specifikationen begrænser typen af ​​variabel eller antallet af tegn, der sendes i URL'en til visningen.

Hvis du giver URL'erne et navn, hjælper det med at identificere dem på skabelonerne.

Det statisk og statiske filer importerer statiske displayfiler på URL-stierne. Lær mere om, hvordan du strukturerer URL-parametre i den officielle Django dokumentation.

4. Tilføj URL til en skabelon

Når du har tilføjet visningsfunktionen til URL'en, skal du oprette en HTML-skabelon for at vise dataene. Du navngiver skabelonen join_hood.html.

{% udvides "base.html" %}

{% belastning statisk %}

{% bloker indhold %}
<div klasse="kort mb-3" stil="max-width: pasform indhold;">
<div klasse="række g-0">
<div klasse="col-md-4">
<div klasse="col-md-8">
<div klasse="kort-legeme">
<h5 klasse="kort-titel"> Velkommen!</h5>
<p klasse="kort-tekst pt-4"> Navn: {{neighbourhood.name}}</s>
<p klasse="kort-tekst pt-4"> Placering: {{neighbourhood.location}}</s>
<p klasse="kort-tekst pt-4"> Beskrivelse: {{neighbourhood.description}}</s>
<p klasse="kort-tekst pt-4"> Sundhed Tlf.:{{neighbourhood.health_tell}}</s>
<p klasse="kort-tekst pt-4"> Politinummer: {{neighbourhood.police_number}}</s>
<p klasse="kort-tekst pt-4"> Beboere: {{kvarter. Tælle}}</s>
</div>
</div>
</div>
</div>
</div>
{% slutblok %}

Opret join_hood skabelon i app-mappen for at vise nabolagsdataene. Først skal du forlænge base.html skabelon med typografiark (bootstrap), som du vil bruge til at style skabelonen. Gengiv derefter de variabler, der viser oplysningerne på siden.

Opret derefter en home.html skabelon, hvor du vil vise alle kvarterer.

{% udvides 'base.html' %}

{% belastning statisk %}

{% bloker indhold %}
<div klasse="beholder" stil="farve: sort;">
<img src="{{neigborhood.hood_logo.url}}" klasse="kort-img-top" alt="{{user.neighborhood.name}}">

<div klasse="række">
{% for kvarter i kvarterer %}
<div klasse="col-md-4">
<div klasse="kort mb-4" stil="min-højde: 340px">
<img src="{{neigborhood.hood_logo.url}}" klasse="kort-img-top" alt="{{user.hood.name}}">

<div klasse="kort-legeme">
<h5 klasse="kort-titel">
{{neigborhood.name}}
({{neigborhood.location}})
<span klasse="ml-4">{{kvarter. Tæl}} medlem{{neighborhood.members.count|pluralize}}</span>
</h5>

<p klasse="kort-tekst">{{neigborhood.description}}</s>
<p klasse="kort-tekst">{{neigborhood.member. Tælle}}</s>

<a href="{% url 'join_hood' nabolag.id %}" klasse="btn btn-primær btn-sm">Deltag i Hood</en>
</div>
</div>
</div>
</div>
</div>
{% slutblok %}

På startsiden skal du gengive alle de oplysninger, du ønsker at vise om kvartererne. Du tilføjer en knap og et ankertag på startsiden. Ankertagget har URL'en navn og kvarters ID.

Når der klikkes på knappen, navigerer knappen til nabolaget af det pågældende id. Hjemskabelonen vises på URL'en http://127.0.0.1:8000/home/. Billedet nedenfor viser denne side:

5. Test dynamisk routing

Nu kan du teste, om den dynamiske routing virker på skabelonen. Når du klikker på tilslutte hætte knappen, den navigerer til join_hood skabelon. Det join_hood skabelonen viser profiloplysninger om det nabolag, du har valgt.

Du vil også se id'et for nabolaget vist på browserens URL http://127.0.0.1:8000/join_hood/2/

Det vil se ud som vist nedenfor:

Tillykke! Du har oprettet en dynamisk URL.

Hvorfor bruge Django-URL'er?

Dynamiske URL'er er en vigtig funktion i webapplikationer. Django gør det nemt at designe URL'er efter dine behov. Det fjerner de begrænsninger, du måske forbinder med andre rammer.

URLconf-modulet er fyldt med ressourcer, der understøtter oprettelse af Django URL. Det gør det også nemmere at servere statiske filer på skabeloner og forbedrer fejlhåndteringen.

Django har andre funktioner designet til at optimere backend-applikationer. Det automatiserer blandt andet brugergodkendelse, indholdsadministration og webstedskort.