Представления и URL-адреса
Направляйте запросы к представлениям
«Представления и URL-адреса» — бесплатный урок Python Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Python Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Python Academy содержит 4 уроков всего.
Что такое представление?
Представление Django — это функция (или класс), которая принимает веб-запрос и возвращает веб-ответ. Представления содержат логику страницы и находятся в файле views.py приложения.
from django.http import HttpResponse
def home(request):
return HttpResponse('Hello, world!')
print('A view takes request, returns response')Аргумент request
Каждое представление получает объект request, содержащий сведения о входящем запросе: метод, данные GET/POST, пользователя и многое другое.
from django.http import HttpResponse
def info(request):
return HttpResponse('Method: ' + request.method)
print('request carries the incoming data')Шаблоны URL
Файл urls.py приложения сопоставляет пути URL с представлениями с помощью списка urlpatterns и функции path().
# blog/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home),
]
print('path maps a URL to a view')Именование URL
Присвойте шаблону параметр name, чтобы ссылаться на него в других местах, не прописывая путь напрямую.
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
]
print("name='home' lets you reference it later")Параметры URL
Извлекайте части URL с помощью преобразователей, например <int:post_id>. Извлечённое значение передаётся в представление.
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)')Чтение параметра
Извлечённое значение поступает как именованный аргумент, соответствующий имени преобразователя.
from django.http import HttpResponse
def detail(request, post_id):
return HttpResponse('Post ' + str(post_id))
print('View receives post_id')Подключение URL приложений
Корневой файл urls.py проекта подключает URL каждого приложения с помощью include(), сохраняя модульность маршрутизации.
# mysite/urls.py
from django.urls import path, include
urlpatterns = [
path('blog/', include('blog.urls')),
]
print('include() wires up app urls')Отображение шаблонов
Сокращённая функция render() объединяет шаблон с контекстным словарём и возвращает HttpResponse.
from django.shortcuts import render
def home(request):
return render(request, 'home.html', {'name': 'Alice'})
print('render combines template + context')Вспомогательные средства для 404
get_object_or_404() получает объект или вызывает ошибку 404, если объект отсутствует. Это распространённый и безопасный шаблон.
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')Обратное построение URL
В Python функция reverse('detail', args=[5]) строит URL по имени шаблона. В шаблонах то же самое делает тег {% 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')Представления на основе классов
Django также предлагает представления на основе классов, например ListView и DetailView, которые обрабатывают распространённые сценарии с меньшим количеством кода.
from django.views.generic import ListView
from .models import Post
class PostList(ListView):
model = Post
print('ListView lists objects automatically')Быстрая проверка
Проверьте свои знания о представлениях и URL.
Итоги
Вы настроили маршрутизацию запросов к представлениям.
- Представления принимают
requestи возвращают ответ urlpatternsиpath()сопоставляют URL с представлениями, при необходимости используя параметрname- Преобразователи, например
<int:id>, извлекают части URL include()подключает URL приложений, аrender()иget_object_or_404()являются удобными сокращёнными функциями
Часто задаваемые вопросы
Урок «Представления и URL-адреса» бесплатный?
Да — полный текст урока «Представления и URL-адреса» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Python Academy, подпишись на CoddyKit PRO. Курс Python Academy содержит 4 уроков всего.
Чему я научусь в уроке «Представления и URL-адреса»?
Направляйте запросы к представлениям Ты практикуешь Python Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Python Academy?
Предыдущий опыт не требуется. Python Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Представления и URL-адреса»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Python Academy?
Да. Каждый урок Python Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Проекты и приложения
- Модели и миграции
- Представления и URL-адреса
- Административная панель Django