Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision.
Utan dynamisk routing skulle det vara svårt att navigera på webbsidor. Du skulle behöva skriva in hela sökvägen för varje sida du besöker i webbläsaren. Vilken hemsk användarupplevelse.
Dynamic Uniform Resource Locators (URLs), låter dig navigera till olika sidor i en app med ett knapptryck. Django gör det enkelt att designa dynamiska webbadresser. Den har en URL Configuration Module (URLconf) som kopplar URL-uttryck till vyer.
All kod i URLconf är i Python-syntax, vilket gör det enkelt att skapa dynamiska webbadresser. Låt oss lära oss mer om dynamiska webbadresser genom att bygga ett Django-projekt.
1. Skapa ett Django-projekt
Först, skapa ett Django-projekt och applikation (app).
Namnge din app Boma-klocka. Appen kommer att samla in plats, beskrivning och invånarnummer från olika stadsdelar. Skapa en modell som heter Grannskap. Använd modellen för att lägga till information om stadsdelarna i en databas. Lära sig hur
skapa modeller i Django och databasen om du inte är bekant.Skapa sedan en vyfunktion för kvarteren.
2. Skapa en visningsfunktion
I Django är vyer Python-funktioner som tar HTTP-förfrågningar och returnerar svar. På en webbsida som drivs av Django utför vyer olika uppgifter och uppdrag.
För att utföra en vy måste du anropa den via en URL. En URL är en unik sökväg till en resurs på webben. Resursen kan vara en HTML-sida, bild eller en API-slutpunkt.
Skapa en URL som hämtar grannskapsdata baserat på parametrarna som skickas. För att göra det kan du använda primärnyckel (pk) eller Identifiering (id) för att hämta informationen. Du kommer att använda en mall för att göra detta.
Du kan skapa vyer genom att definiera dem i en fil som heter views.py i appens mapp. Börja med att importera framställa funktion från Django för att visa data på URL: en. Importera också Grannskap modell från models.py.
från django.shortcuts importera framställa
från .modeller importera Grannskap
Skapa sedan en vyfunktion med namnet Hem som visar alla stadsdelar på hemmallen. De NeighborHood.objects.all() funktion tar emot data för alla stadsdelar från databasen.
defHem(begäran):
kvarter = NeighbourHood.objects.all()
returnera render (begäran, "home.html", {'kvarter':neighborhoods})
Skapa också en visningsfunktion för join_hood som visar en stadsdels information. De NeighbourHood.objects.get (id=id) funktionen begär data enligt ID. Informationen återges sedan på en mall.
defjoin_hood(förfrågan, id):
kvarter = NeighbourHood.objects.get (id=id)
returnera render (begäran, 'join_hood.html', {'grannskap':grannskap})
Senare, när du navigerar till en stadsdel, kommer du att kunna se dess profilinformation.
3. Skapa en dynamisk URL
Du kan nu skapa en dynamisk URL för visningsfunktionen du skapade.
från django.urls importera väg
från. importera vyer
från django.conf importera inställningar
från django.conf.urls.static importerastatisk
fråndjango.contrib.staticfiler.urlsimporterastaticfiles_urlpatternsurlpatterns = [
väg ('Hem', views.home, name='Hem'),
väg ('join_hood/<str: id>/', views.join_hood, name='join_hood'),
]
ominställningar.DEBUG:
urlmönster += statisk(inställningar. MEDIA_URL, document_root = inställningar. MEDIA_ROOT)
Importera väg från Django-URL: er för att skapa sökvägar för vyn. Importera sedan vyfunktionerna från views.py.
De join_hood URL har en platshållare inom vinkelparenteser:. Detta fångar den delen av webbadressen och skickar den till vyn.
Vinkelfästena inkluderar vanligtvis en omvandlarspecifikation. Specifikationen kan antingen vara en sträng (str) eller heltal (int). Django erbjuder också snigel, stig, eller universellt unika identifierare (uuid). Specifikationen begränsar typen av variabel eller antalet tecken som skickas i URL: en till vyn.
Att ge webbadresserna ett namn hjälper till att identifiera dem på mallarna.
De statisk och statiska filer importerar statiska visningsfiler på URL-vägarna. Läs mer om hur du strukturerar URL-parametrar i den officiella Django dokumentation.
4. Lägg till URL till en mall
När du har lagt till visningsfunktionen i URL: en skapar du en HTML-mall för att visa data. Du namnger mallen join_hood.html.
{% sträcker sig "base.html" %}
{% laddning statisk %}
{% block content %}
<div klass="kort mb-3" stil="max-width: passform innehåll;">
<div klass="rad g-0">
<div klass="kol-md-4">
<div klass="kol-md-8">
<div klass="kortkropp">
<h5 klass="kort-titel"> Välkommen!</h5>
<p klass="kort-text pt-4"> Namn: {{neighbourhood.name}}</s>
<p klass="kort-text pt-4"> Plats: {{neigbourhood.location}}</s>
<p klass="kort-text pt-4"> Beskrivning: {{neighbourhood.description}}</s>
<p klass="kort-text pt-4"> Hälsa Tel:{{neighbourhood.health_tell}}</s>
<p klass="kort-text pt-4"> Polisnummer: {{neighbourhood.police_number}}</s>
<p klass="kort-text pt-4"> Invånare: {{ grannskap. Räkna}}</s>
</div>
</div>
</div>
</div>
</div>
{% slutblock %}
Skapa join_hood mallen i appmappen för att visa grannskapsdata. Förläng först base.html mall med stilmallar (bootstrap) som du ska använda för att styla mallen. Gör sedan de variabler som visar informationen på sidan.
Skapa sedan en home.html mall där du kommer att visa alla stadsdelar.
{% sträcker sig 'base.html' %}
{% laddning statisk %}
{% block content %}
<div klass="behållare" stil="svart färg;">
<img src="{{neighborhood.hood_logo.url}}" klass="card-img-top" alt="{{user.neighborhood.name}}"><div klass="rad">
{% för grannskap i stadsdelar %}
<div klass="kol-md-4">
<div klass="kort mb-4" stil="min-höjd: 340px">
<img src="{{neighborhood.hood_logo.url}}" klass="card-img-top" alt="{{user.hood.name}}"><div klass="kortkropp">
<h5 klass="kort-titel">
{{neigborhood.name}}
({{neigborhood.location}})
<span class="ml-4">{{grannskap. Räkna}} medlem{{neighborhood.members.count|pluralize}}</span>
</h5><p klass="kort-text">{{neigborhood.description}}</s>
<p klass="kort-text">{{neigborhood.member. Räkna}}</s>
<a href="{% url 'join_hood' stadsdel.id %}" klass="btn btn-primär btn-sm">Gå med i Hood</a>
</div>
</div>
</div>
</div>
</div>
{% slutblock %}
På startsidan återger du all information du vill visa om stadsdelarna. Du kommer att lägga till en knapp och en ankartagg på startsidan. Ankartaggen har URL: en namn och grannskaps-ID.
När du klickar på knappen navigerar du till området för det ID: t. Hemmallen visas på URL: en http://127.0.0.1:8000/home/. Bilden nedan visar denna sida:
5. Testa dynamisk routing
Nu kan du testa om den dynamiska routingen fungerar på mallen. När du klickar på sammanfoga huva knappen navigerar den till join_hood mall. De join_hood mallen visar profilinformation om området du valt.
Du kommer också att se kvarterets ID på webbläsarens URL http://127.0.0.1:8000/join_hood/2/
Det kommer att se ut som visas nedan:
Grattis! Du har skapat en dynamisk URL.
Varför använda Django-webbadresser?
Dynamiska webbadresser är en viktig funktion i webbapplikationer. Django gör det enkelt att designa webbadresser efter dina behov. Det tar bort de begränsningar du kan associera med andra ramverk.
URLconf-modulen är full av resurser som stödjer skapande av Django-URL. Det gör det också lättare att servera statiska filer på mallar och förbättrar felhanteringen.
Django har andra funktioner utformade för att optimera backend-applikationer. Det automatiserar bland annat användarautentisering, innehållsadministration och webbplatskartor.