Адреса в Django. Связь urls и views. HttpResponse

Обработка адресов готова: при запросе к URL, описанному в urlpatterns, будет вызван обработчик для этого запроса, а если адрес запроса не найден в списке — пользователю вернётся ошибка Error 404.Но пока нет обработчиков, ничего не будет, так что следующий этап — настройка обработчиков. Обработчики — это view-функции или view-классы. Их хранят в файле views.py.

Объект запроса и объект ответа

View-функции принимают на вход объект запроса HttpRequest. В нём содержатся данные о запросе: например, запрошенный URL, тип запроса и многое другое.Возвращают view-функции объект ответа HttpResponse — он содержит всю информацию, которую должен получить веб-клиент: код ответа сервера, код HTML-страницы и другую полезную для клиента информацию. Детально познакомиться с этими объектами можно в документации Django:

Сейчас проект «Анфиса для друзей» умеет обрабатывать такие адреса:

# ice_cream/urls.py
from django.urls import path
from . import views

urlpatterns = [
    # Главная страница
    path('', views.index),
    # Страница со списком мороженого
    path('ice_cream/', views.ice_cream_list),
    # Страница с информацией об одном сорте мороженого;
    # в качестве параметра ожидает целое положительное число или 0
    path('ice_cream/<int:pk>/', views.ice_cream_detail),
] 

Самые простые view-функции для этих адресов могут быть такими:

# ice_cream/views.py
from django.http import HttpResponse


# Главная страница
def index(request):    
    return HttpResponse('Главная страница')


# Страница со списком мороженого
def icecream_list(request):
    return HttpResponse('Список мороженого')


# Страница с информацией об одном сорте мороженого;
# view-функция принимает параметр pk из path()
def icecream_detail(request, pk):
    return HttpResponse(f'Мороженое номер {pk}') 
Page not found (404)
Request Method:     GET
Request URL:     http://127.0.0.1:8000/ice_cream/number/

Using the URLconf defined in anfisa.urls, 
Django tried these URL patterns, in this order:
    
    ice_cream/ 
    ice_cream/<int:pk>/ 
    admin/

The current path, ice_cream/number/, didn't match any of these.

You're seeing this error because you have DEBUG = True 
in your Django settings file.
Change that to False, and Django will display a standard 404 page. 


Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: