Widoki i adresy URL
Kieruj żądania do widoków
Widoki i adresy URL to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.
Czym jest widok?
widok Django to funkcja (lub klasa), która przyjmuje żądanie internetowe i zwraca odpowiedź internetową. Widoki zawierają logikę stron i znajdują się w pliku views.py aplikacji.
from django.http import HttpResponse
def home(request):
return HttpResponse('Hello, world!')
print('A view takes request, returns response')Argument request
Każdy widok otrzymuje obiekt request zawierający szczegóły przychodzącego żądania: metodę, dane GET/POST, użytkownika i inne informacje.
from django.http import HttpResponse
def info(request):
return HttpResponse('Method: ' + request.method)
print('request carries the incoming data')Wzorce adresów URL
Plik urls.py aplikacji przypisuje ścieżki URL do widoków za pomocą listy o nazwie urlpatterns i funkcji path().
# blog/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home),
]
print('path maps a URL to a view')Nazywanie adresów URL
Nadaj wzorcowi wartość name, aby można było odwoływać się do niego w innych miejscach bez wpisywania ścieżki na sztywno.
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
]
print("name='home' lets you reference it later")Parametry URL
Przechwytuj fragmenty adresu URL za pomocą konwerterów, takich jak <int:post_id>. Przechwycona wartość zostaje przekazana do widoku.
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)')Odczytywanie parametru
Przechwycona wartość jest przekazywana jako argument nazwany odpowiadający nazwie konwertera.
from django.http import HttpResponse
def detail(request, post_id):
return HttpResponse('Post ' + str(post_id))
print('View receives post_id')Dołączanie adresów URL aplikacji
Główny plik urls.py projektu dołącza pliki urls poszczególnych aplikacji za pomocą include(), dzięki czemu routing pozostaje modularny.
# mysite/urls.py
from django.urls import path, include
urlpatterns = [
path('blog/', include('blog.urls')),
]
print('include() wires up app urls')Renderowanie szablonów
Skrót render() łączy szablon ze słownikiem kontekstu i zwraca obiekt HttpResponse.
from django.shortcuts import render
def home(request):
return render(request, 'home.html', {'name': 'Alice'})
print('render combines template + context')Pomocniki 404
get_object_or_404() pobiera obiekt lub zgłasza błąd 404, jeśli go nie ma. Jest to często stosowany i bezpieczny wzorzec.
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')Odwracanie adresów URL
W języku Python funkcja reverse('detail', args=[5]) tworzy adres URL na podstawie nazwy wzorca. W szablonach to samo zadanie wykonuje tag {% url %}.
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')Widoki oparte na klasach
Django oferuje również widoki oparte na klasach, takie jak ListView i DetailView, które obsługują typowe przypadki przy użyciu mniejszej ilości kodu.
from django.views.generic import ListView
from .models import Post
class PostList(ListView):
model = Post
print('ListView lists objects automatically')Szybki sprawdzian
Sprawdź swoją wiedzę na temat widoków i adresów URL.
Podsumowanie
Skierowałeś żądania do widoków.
- Widoki przyjmują obiekt
requesti zwracają odpowiedź urlpatterns+path()przypisują adresy URL do widoków, opcjonalnie z użyciem wartościname- Konwertery takie jak
<int:id>przechwytują fragmenty adresu URL include()łączy adresy URL aplikacji, arender()iget_object_or_404()to przydatne skróty
Często zadawane pytania
Czy lekcja „Widoki i adresy URL” jest bezpłatna?
Tak — pełny tekst „Widoki i adresy URL” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Widoki i adresy URL”?
Kieruj żądania do widoków Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Python Academy?
Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Widoki i adresy URL”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?
Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Projekty i aplikacje
- Modele i migracje
- Widoki i adresy URL
- Panel administracyjny Django