Lezers zoals jij steunen MUO. Wanneer u een aankoop doet via links op onze site, kunnen we een aangesloten commissie verdienen.

Zonder dynamische routering zou het navigeren op webpagina's moeilijk zijn. U zou het volledige pad moeten typen van elke pagina die u in de browser bezoekt. Wat een vreselijke gebruikerservaring.

Met Dynamic Uniform Resource Locators (URL's) kunt u met één klik op de knop naar verschillende pagina's van een app navigeren. Django maakt het eenvoudig om dynamische URL's te ontwerpen. Het heeft een URL-configuratiemodule (URLconf) die URL-expressies verbindt met weergaven.

Alle code in de URLconf is in Python-syntaxis, waardoor het eenvoudig is om dynamische URL's te maken. Laten we meer leren over dynamische URL's door een Django-project te bouwen.

1. Maak een Django-project

Eerst, maak een Django-project aan en applicatie (app).

Geef uw app een naam Boma-horloge. De app verzamelt locatie, beschrijving en bewonersnummers van verschillende buurten. Maak een model met de naam

instagram viewer
Buurt. Gebruik het model om informatie over de buurten toe te voegen aan een database. Leren hoe te maak modellen in Django en de database als u onbekend bent.

Maak vervolgens een weergavefunctie voor de buurten.

2. Maak een weergavefunctie

In Django zijn weergaven Python-functies die HTTP-verzoeken aannemen en antwoorden retourneren. Op een webpagina die wordt aangedreven door Django, voeren weergaven verschillende taken en missies uit.

Om een ​​weergave uit te voeren, moet u deze via een URL aanroepen. Een URL is een uniek pad naar een bron op internet. De bron kan een HTML-pagina, afbeelding of een API-eindpunt zijn.

Maak een URL die buurtgegevens ophaalt op basis van de doorgegeven parameters. Hiervoor kunt u de primaire sleutel (pk) of Identificatie (id) om de informatie op te halen. Hiervoor gebruikt u één sjabloon.

U kunt weergaven maken door ze te definiëren in een bestand met de naam weergaven.py in de map van de app. Begin met het importeren van de veroorzaken functie van Django om gegevens op de URL weer te geven. Importeer ook de Buurt model van modellen.py.

van django.snelkoppelingen importeren veroorzaken
van .modellen importeren Buurt

Maak vervolgens een weergavefunctie met de naam thuis dat alle buurten op de thuissjabloon weergeeft. De NeighborHood.objects.all() functie ontvangt gegevens voor alle buurten uit de database.

defthuis(verzoek):
buurten = Buurt.objecten.all()
return render (verzoek, "thuis.html", {'buurten':buurten})

Maak ook een weergavefunctie voor join_hood dat zal de informatie van een buurt weergeven. De Buurt.objecten.get (id=id) functie vraagt ​​gegevens op volgens de ID. De informatie wordt vervolgens weergegeven op een sjabloon.

defjoin_hood(Aanvraag ID):
buurt = Buurt.objecten.get (id=id)
return render (verzoek, 'join_hood.html', {'buurt':buurt})

Later, wanneer u naar een buurt navigeert, kunt u de profielinformatie zien.

3. Maak een dynamische URL

U kunt nu een dynamische URL maken voor de weergavefunctie die u hebt gemaakt.

van django.urls importeren pad
van. importeren keer bekeken
van django.conf importeren instellingen
van django.conf.urls.static importerenstatisch
vandjango.bijdragen.statische bestanden.url'simporterenstaticfiles_urlpatterns

urlpatronen = [
pad ('thuis', views.home, naam='thuis'),
pad ('join_hood/<str: id>/', views.join_hood, naam='join_hood'),
]

alsinstellingen.DEBUG:
urlpatronen += statisch(instellingen. MEDIA_URL, document_root = instellingen. MEDIA_ROOT)

Importeren pad van Django-URL's om paden voor de weergave te maken. Importeer vervolgens de weergavefuncties van weergaven.py.

De join_hood URL heeft een tijdelijke aanduiding tussen punthaken:. Dit legt dat deel van de URL vast en stuurt het naar de weergave.

De punthaken bevatten meestal een omvormerspecificatie. De specificatie kan een tekenreeks (str) of een geheel getal (int) zijn. Django biedt ook aan slak, pad, of universeel unieke identifiers (uuid). De specificatie beperkt het type variabele of het aantal tekens dat in de URL aan de weergave wordt doorgegeven.

Door de URL's een naam te geven, kunnen ze op de sjablonen worden geïdentificeerd.

De statisch En statische bestanden imports tonen statische bestanden op de URL-paden. Lees meer over het structureren van URL-parameters in de officiële Django documentatie.

4. URL toevoegen aan een sjabloon

Nadat u de weergavefunctie aan de URL hebt toegevoegd, maakt u een HTML-sjabloon om de gegevens weer te geven. U geeft de sjabloon een naam join_hood.html.

{% verlengt "basis.html" %}

{% belasting statisch %}

{% blokinhoud %}
<div klasse="kaart mb-3" stijl="max-width: inhoud passend maken;">
<div klasse="rij g-0">
<div klasse="col-md-4">
<div klasse="col-md-8">
<div klasse="kaartlichaam">
<h5 klasse="kaart-titel"> Welkom!</h5>
<p klasse="kaarttekst pt-4"> Naam: {{buurt.naam}}</P>
<p klasse="kaarttekst pt-4"> Locatie: {{neighbourhood.location}}</P>
<p klasse="kaarttekst pt-4"> Beschrijving: {{neighbourhood.description}}</P>
<p klasse="kaarttekst pt-4"> Gezondheid Tel:{{neighbourhood.health_tell}}</P>
<p klasse="kaarttekst pt-4"> Politienummer: {{neighbourhood.police_number}}</P>
<p klasse="kaarttekst pt-4"> Bewoners: {{buurt. Graaf}}</P>
</div>
</div>
</div>
</div>
</div>
{% eindblok %}

Maak de join_hood sjabloon in de app-map om de buurtgegevens weer te geven. Verleng eerst de basis.html sjabloon met stijlbladen (bootstrap) die u gaat gebruiken om de sjabloon op te maken. Geef vervolgens de variabelen weer die de informatie op de pagina zullen weergeven.

Maak vervolgens een thuis.html sjabloon waar u alle buurten zult weergeven.

{% verlengt 'basis.html' %}

{% belasting statisch %}

{% blokinhoud %}
<div klasse="container" stijl="de kleur zwart;">
<img src="{{neighborhood.hood_logo.url}}" klasse="kaart-img-top" alt="{{gebruiker.neighborhood.name}}">

<div klasse="rij">
{% voor buurt in buurten %}
<div klasse="col-md-4">
<div klasse="kaart mb-4" stijl="minimale hoogte: 340px">
<img src="{{neighborhood.hood_logo.url}}" klasse="kaart-img-top" alt="{{user.hood.name}}">

<div klasse="kaartlichaam">
<h5 klasse="kaart-titel">
{{buurt.naam}}
({{buurt.locatie}})
<overspanningsklasse="ml-4">{{buurt. Count}} lid{{neighborhood.members.count|pluralize}}</span>
</h5>

<p klasse="kaart-tekst">{{buurt.beschrijving}}</P>
<p klasse="kaart-tekst">{{buurt.lid. Graaf}}</P>

<een href="{% url 'join_hood' buurt.id %}" klasse="btn btn-primair btn-sm">Doe mee met Hood</A>
</div>
</div>
</div>
</div>
</div>
{% eindblok %}

Geef op de startpagina alle informatie weer die u over de buurten wilt weergeven. U voegt een knop en een ankertag toe aan de startpagina. De ankertag heeft de URL naam En buurt ID.

Wanneer erop wordt geklikt, navigeert de knop naar de buurt van die ID. De startsjabloon verschijnt bij de URL http://127.0.0.1:8000/home/. De onderstaande afbeelding illustreert deze pagina:

5. Test dynamische routering

Nu kunt u testen of de dynamische routering werkt op de sjabloon. Wanneer u op de lid worden van de kap knop, het navigeert naar de join_hood sjabloon. De join_hood sjabloon geeft profielinformatie weer over de buurt die u hebt geselecteerd.

U ziet ook de ID van de buurt die wordt weergegeven op de browser-URL http://127.0.0.1:8000/join_hood/2/

Het zal verschijnen zoals hieronder getoond:

Gefeliciteerd! U hebt een dynamische URL gemaakt.

Waarom Django-URL's gebruiken?

Dynamische URL's zijn een belangrijke functie in webapplicaties. Django maakt het gemakkelijk om URL's te ontwerpen volgens uw behoeften. Het verwijdert de beperkingen die u mogelijk associeert met andere frameworks.

De URLconf-module zit vol met bronnen die het maken van Django-URL's ondersteunen. Het maakt het ook gemakkelijker om statische bestanden op sjablonen aan te bieden en verbetert de foutafhandeling.

Django heeft andere functies die zijn ontworpen om backend-applicaties te optimaliseren. Het automatiseert onder andere gebruikersauthenticatie, contentbeheer en sitemaps.