Шередеко Василий, [email protected]
https://docs.djangoproject.com/en/2.0/topics/http/urls/
from django.urls import path
from articles import views
urlpatterns = [
path('articles/', views.all),
path('articles/2003/', views.special_case_2003),
path('articles/<int:year>/', views.year_archive),
]
path(pattern, view, *, name)
pattern
- Шаблон для разбора URLview
- обработчик данного шаблона или другии шаблоныname
- Имя шаблона URL
- Примеры:
- Пустой URL (``)
- Строка (
<str:name>/
) - Число (
<int:id>/
) - Slug (
<int:id>/
)
reverse(name, *, args, kwargs)
name
- Имя шаблона URLargs
- Коллекция аргументовkwargs
- Словарь аргументов
path(pattern, includes)
pattern
- Шаблон для разбора URLincludes
- коллекция URL'ов или вызовinclude
include(module)
module
- Модуль содержаций коллекцию URL'ов в переменнойurlpatterns
handler404
- ресурс не найденhandler500
- необработанная ошибкаhandler403
- доступ запрещенhandler400
- запрос содержит ошибки
from django.http import HttpRequest, HttpResponse
def home(request: HttpRequest) -> HttpResponse:
return HttpResponse(
'<b>Hello world!</b>',
content_type='text/html'
)
Основные свойства объекта:
request.method
- HTTP методrequest.path
- относительный путь до ресурса (URL)request.scheme
- протокол запроса:HTTP
request.GET
- параметры запросаrequest.POST
- значения из формы
HTTP методы:
GET
- получение ресурса с сервераPOST
- отправка ресурса на серверDELETE
- удаление ресурса на серверPUT
,PATCH
,OPTIONS
и другие
Менее используемые свойства объекта:
request.FILES
- файлыrequest.COOKIES
- Ку́ки браузераrequest.session
- Сессия браузера.request.scheme
- Схема запроса (http
илиhttps
)request.body
- Необработанные данные тела запроса
HttpResponse(
content,
content_type,
status,
reason,
charset
)
Аргументы конструктора HttpResponse:
content
:str | bytearray
- тело ответаcontent_type
:str
- MIME-тип ответа:plain/text
- обычный текст.plain/html
- HTML текст.
Аргументы конструктора HttpResponse:
status
:int
- код HTTP ответа.reason
:str
- Текст к коду HTTP ответа:Ok
Not found
Самые используемые HTTP статусы:
200
- все ок301
- постоянное перенаправление302
- временное перенаправление400
- плохой запрос401
- неавторизованный пользователь403
- запрещенный ресурс404
- ресурс не найден405
- метод запрещен418
- Я чайник (I’m a teapot)500
- Ошибка приложения
def view(request):
return redirect('https://google.com/", permanent=False)
redirect(to, permanent)
to
- куда перенаправлять:- URL
- Имя шаблона URL
permanent
:bool
- постоянное или временное перенаправление.*args
,**kwargs
- передаются в формирование из шаблона URL
Указание разрешенных HTTP-методов для обработки запроса:
@require_http_methods(["GET", "POST"])
def view(request):
if request.method == 'POST':
return ...
return ...