Python Academy · Lektion

Vyer och URL:er

Dirigera förfrågningar till vyer

Lektion 3 av 413 steg

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 request och returnerar ett svar
  • urlpatterns + path() mappar URL:er till vyer, valfritt med ett name
  • Konverterare som <int:id> fångar delar av URL:er
  • include() kopplar in appens URL-konfiguration; render() och get_object_or_404() är användbara genvägar
Gratis att börja

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

  1. Projekt och appar
  2. Modeller och migreringar
  3. Vyer och URL:er
  4. Django Admin
← Tillbaka till Python Academy