#python #django #django-views #django-request
#python #django #django-представления #django-запрос
Вопрос:
В url.py Я настроил новый путь в главном списке urlpatterns:
path('ko/', views.ko),
Я узнал, что мне нужно написать эту функцию в views.py для запуска веб-страницы:
def ko(request):
return HttpResponse("It's a page")
Мой вопрос в том, почему функция не работает, когда я оставляю параметр пустым вместо запроса?:
def ko():
return HttpResponse("It's a page")
Запуск страницы, когда я удаляю параметр запроса, выдает ошибку типа:ko() принимает 0 позиционных аргументов, но был задан 1.
Если у меня нет ввода запроса при вызове функции views.ko, тогда почему параметр запроса необходим при написании начальной функции, что делает параметр запроса и куда этот параметр запроса переходит? Каковы ее атрибуты? Я был бы очень признателен за подробный ответ о его качествах.
Ответ №1:
Функция просмотра, или сокращенно view, — это функция Python, которая принимает веб-запрос и возвращает веб-ответ. Таким образом, каждое представление должно принимать request
параметр.
request
Объект содержит метаданные о запросе, например, какой метод HTTP-запроса использовался, IP-адрес клиента и т.д. Вы найдете список HttpRequest
здесь
Также из документации.
Как только один из шаблонов URL совпадает, Django импортирует и вызывает заданное представление, которое является функцией Python (или представлением на основе класса). Представлению передаются следующие аргументы:
Экземпляр HttpRequest.
Если соответствующий шаблон URL не содержал именованных групп, то совпадения из регулярного выражения предоставляются в качестве позиционных аргументов.
Аргументы ключевого слова состоят из любых именованных частей, которым соответствует предоставленное выражение path, переопределяемых любыми аргументами, указанными в необязательном аргументе kwargs для django.urls.path() или django.urls.re_path().
Комментарии:
1. Как объект Httprequest, представленный как ‘request’, обрабатывается в выводе объекта Httpresponse? Я понимаю, что параметр запроса представляет объект, но у меня возникают проблемы с пониманием того, как обрабатывается этот ввод, когда у меня нет никакого кода, написанного явно о запросе в вышеупомянутой функции ko ().
2. HttpResponse — это ответственность вашей функции. Запрос здесь просто для того, чтобы предоставить вам информацию на случай, если она вам понадобится для построения вашего ответа. Это нормально, чтобы не использовать его.
Ответ №2:
Каждая функция просмотра принимает объект HttpRequest в качестве своего первого параметра, который обычно называется request