Dynamische routering gebruiken met Django

Dynamische routering gebruiken met Django
Lezers zoals jij helpen MUO ondersteunen. 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.





hoe maak je een afbeelding achtergrond transparant

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





MAKEUSEVAN VIDEO VAN DE DAG

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





1. Maak een Django-project

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

Geef je app een naam Boma-horloge . De app verzamelt locatie-, beschrijvings- en bewonersnummers van verschillende buurten. Maak een model met de naam 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 niet bekend bent.



Maak vervolgens een weergavefunctie voor de buurten.

2. Maak een weergavefunctie

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





Om een ​​weergave uit te voeren, moet u deze aanroepen via een URL. 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. Om dit te doen, kunt u de primaire sleutel (pk) of Identificatie (ID) om de informatie op te halen. U gebruikt hiervoor één sjabloon.





U kunt weergaven maken door ze te definiëren in een bestand met de naam views.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 .

from django.shortcuts import render 
from .models import NeighbourHood

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

def home(request): 
neighborhoods = NeighbourHood.objects.all()
return render (request, "home.html", {'neighborhoods':neighborhoods})

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

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

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

3. Maak een dynamische URL

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

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)

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

De join_hood URL heeft een tijdelijke aanduiding tussen punthaken: . Hiermee wordt dat deel van de URL vastgelegd en naar de weergave verzonden.

De punthaken bevatten meestal een specificatie van de converter. De specificatie kan een tekenreeks zijn (str) of geheel getal (int). Django biedt ook 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 worden geïdentificeerd in de sjablonen.

De statisch en statische bestanden imports geven statische bestanden weer op de URL-paden. Meer informatie 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 noemt de sjabloon join_hood.html .

waarom laat paypal me geen geld sturen?
{% 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 %}

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

Maak vervolgens een home.html sjabloon waarin u alle buurten weergeeft.

{% 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 %}

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 home-sjabloon verschijnt op de URL http://127.0.0.1:8000/home/. The picture below demonstrates this page:

  Startpagina toont alle buurten

5. Test dynamische routering

Nu kunt u testen of de dynamische routering werkt op de sjabloon. Wanneer u op de klikt sluit je aan bij hood 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 in de browser-URL http://127.0.0.1:8000/join_hood/2/

Het zal verschijnen zoals hieronder weergegeven:

  join_hood-pagina toont details van de buurt in de browser

Gefeliciteerd! U heeft een dynamische URL gemaakt.

afdruktaak verwijdert Windows 10 niet

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 zou kunnen associëren met andere frameworks.

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

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