Hur man använder dynamisk routing med Django

Hur man använder dynamisk routing med Django
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.





MAKEUSE AV DAGENS VIDEO

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 vyfunktion

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 .

from django.shortcuts import render 
from .models import NeighbourHood

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.

hur man tar bort en profil på ps4
def home(request): 
neighborhoods = NeighbourHood.objects.all()
return render (request, "home.html", {'neighborhoods':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.

def join_hood(request, id): 
neighborhood = NeighbourHood.objects.get(id=id)
return render (request, 'join_hood.html', {'neighborhood':neighborhood})

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.

from django.urls import path 
from . import views
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

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

if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root = settings.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 .

{% extends "base.html" %} 

{% load static %}

{% block content %}
<div class="card mb-3" style="max-width:fit content;">
<div class="row g-0">
<div class="col-md-4">
<div class="col-md-8" >
<div class="card-body">
<h5 class="card-title"> Welcome!</h5>
<p class="card-text pt-4"> Name: {{neighbourhood.name}}</p>
<p class="card-text pt-4"> Location: {{neighbourhood.location}}</p>
<p class="card-text pt-4"> Description: {{neighbourhood.description}}</p>
<p class="card-text pt-4"> Health Tel:{{neighbourhood.health_tell}}</p>
<p class="card-text pt-4"> Police Number: {{neighbourhood.police_number}}</p>
<p class="card-text pt-4"> Residents : {{neighbourhood.Count}}</p>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

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.

hur man återställer administratörslösenord för windows 7

Skapa sedan en home.html mall där du kommer att visa alla stadsdelar.

{% extends 'base.html' %} 

{% load static %}

{% block content %}
<div class="container" style="color:black;">
<img src="{{neighborhood.hood_logo.url}}" class="card-img-top" alt="{{user.neighborhood.name}}">

<div class="row">
{% for neighborhood in neighborhoods %}
<div class="col-md-4">
<div class="card mb-4" style="min-height:340px">
<img src="{{neighborhood.hood_logo.url}}" class="card-img-top" alt="{{user.hood.name}}">

<div class="card-body">
<h5 class="card-title">
{{neighborhood.name}}
({{neighborhood.location}})
<span class="ml-4">{{neighborhood.Count}} member{{neighborhood.members.count|pluralize}}</span>
</h5>

<p class="card-text">{{neighborhood.description}}</p>
<p class="card-text">{{neighborhood.member.Count}}</p>

<a href="{% url 'join_hood' neighborhood.id %}" class="btn btn-primary btn-sm">Join Hood</a>
</div>
</div>
</div>
</div>
</div>
{% endblock %}

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/. The picture below demonstrates this page:

  Hemsidan visar alla stadsdelar

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 som visas på webbläsarens URL http://127.0.0.1:8000/join_hood/2/

Det kommer att se ut som visas nedan:

  join_hood-sidan visar detaljer om grannskapet i webbläsaren

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.