Vyer och URL:er
Dirigera förfrågningar till vyer
Vyer och URL:er är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.
Vad är en vy?
En Django-vy är en funktion (eller klass) som tar emot en webbförfrågan och returnerar ett webbsvar. Vyer innehåller sidlogiken och finns i en apps views.py.
from django.http import HttpResponse
def home(request):
return HttpResponse('Hello, world!')
print('A view takes request, returns response')Argumentet request
Varje vy tar emot ett request-objekt som innehåller information om den inkommande förfrågan: metod, GET/POST-data, användare och mycket mer.
from django.http import HttpResponse
def info(request):
return HttpResponse('Method: ' + request.method)
print('request carries the incoming data')URL-mönster
En apps urls.py mappar URL-sökvägar till vyer med hjälp av en lista med namnet urlpatterns och funktionen path().
# blog/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home),
]
print('path maps a URL to a view')Namnge URL:er
Ge ett mönster ett name så att du kan hänvisa till det på andra ställen utan att hårdkoda sökvägen.
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
]
print("name='home' lets you reference it later")URL-parametrar
Fånga delar av URL:en med konverterare som <int:post_id>. Det infångade värdet skickas till vyn.
from django.urls import path
from . import views
urlpatterns = [
path('post/<int:post_id>/', views.detail, name='detail'),
]
print('post/5/ -> detail(request, post_id=5)')Läsa parametern
Det infångade värdet kommer fram som ett nyckelordsargument med samma namn som konverteraren.
from django.http import HttpResponse
def detail(request, post_id):
return HttpResponse('Post ' + str(post_id))
print('View receives post_id')Inkludera appens URL:er
Projektets centrala urls.py hämtar in varje apps URL-konfiguration med include(), vilket håller routningen modulär.
# mysite/urls.py
from django.urls import path, include
urlpatterns = [
path('blog/', include('blog.urls')),
]
print('include() wires up app urls')Rendera mallar
Genvägen render() kombinerar en mall med en kontextordbok och returnerar ett HttpResponse.
from django.shortcuts import render
def home(request):
return render(request, 'home.html', {'name': 'Alice'})
print('render combines template + context')404-hjälpfunktioner
get_object_or_404() hämtar ett objekt eller kastar ett 404-fel om objektet saknas, vilket är ett vanligt och säkert mönster.
from django.shortcuts import get_object_or_404, render
from .models import Post
def detail(request, post_id):
post = get_object_or_404(Post, id=post_id)
return render(request, 'detail.html', {'post': post})
print('get_object_or_404 handles missing data')Skapa URL:er baklänges
I Python bygger reverse('detail', args=[5]) en URL utifrån ett mönsternamn. I mallar gör taggen {% url %} samma sak.
from django.urls import reverse
# reverse('detail', args=[5]) -> '/blog/post/5/'
# In a template: {% url 'detail' post.id %}
print('reverse builds URLs from names')Klassbaserade vyer
Django erbjuder även klassbaserade vyer som ListView och DetailView, vilka hanterar vanliga mönster med mindre kod.
from django.views.generic import ListView
from .models import Post
class PostList(ListView):
model = Post
print('ListView lists objects automatically')Snabbtest
Testa dina kunskaper om vyer och URL:er.
Sammanfattning
Du har dirigerat förfrågningar till vyer.
- Vyer tar emot en
requestoch returnerar ett svar urlpatterns+path()mappar URL:er till vyer, valfritt med ettname- Konverterare som
<int:id>fångar delar av URL:er include()kopplar in appens URL-konfiguration;render()ochget_object_or_404()är användbara genvägar
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 76
- Lektioner
- 320
Vanliga frågor
Är lektionen ”Vyer och URL:er” gratis?
Ja – hela texten till ”Vyer och URL:er” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Vyer och URL:er”?
Dirigera förfrågningar till vyer Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Python Academy?
Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Vyer och URL:er”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Python Academy-lektionen?
Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Projekt och appar
- Modeller och migreringar
- Vyer och URL:er
- Django Admin