Функции django.urls для использования в URLconf
path()
-
path(route, view, kwargs=None, name=None)
Возвращает элемент для включения в urlpatterns. Например:
from django.urls import include, path
urlpatterns = [
path("index/", views.index, name="main-view"),
path("bio/<username>/", views.bio, name="bio"),
path("articles/<slug:title>/", views.article, name="article-detail"),
path("articles/<slug:title>/<int:section>/", views.section, name="article-section"),
path("blog/", include("blog.urls")),
...,
]
route
Аргумент route должен быть строкой или gettext_lazy() (см. Перевод шаблонов URL), содержащей шаблон URL. Строка может содержать угловые скобки (как <username> выше), чтобы захватить часть URL и передать её в представление как именованный аргумент. Угловые скобки могут содержать спецификацию конвертера (как часть int в <int:section>), которая ограничивает набор совпадающих символов и может также изменить тип переменной, передаваемой в представление. Например, <int:section> соответствует строке десятичных цифр и преобразует значение в int.
При обработке запроса Django начинает с первого шаблона в urlpatterns и проходит по списку, сравнивая запрошенный URL с каждым шаблоном, пока не найдёт совпадение. Подробнее см. в разделе Как Django обрабатывает запрос.
Шаблоны не сопоставляются с параметрами GET и POST или доменным именем. Например, при запросе https://www.example.com/myapp/ URLconf будет искать myapp/. При запросе https://www.example.com/myapp/?page=3 URLconf также будет искать myapp/.
view
Аргумент view — это функция-представление или результат вызова as_view() для представлений на основе классов. Им также может быть django.urls.include().
Когда Django находит совпадающий шаблон, он вызывает указанную функцию-представление, передавая ей объект HttpRequest в качестве первого аргумента и любые «захваченные» значения из маршрута в качестве именованных аргументов.
kwargs
Аргумент kwargs позволяет передавать дополнительные аргументы функции или методу-представлению. Пример см. в разделе Передача дополнительных параметров функциям-представлениям.
name
Присвоение имени URL позволяет однозначно ссылаться на него в других частях Django, особенно в шаблонах. Эта мощная возможность позволяет вносить глобальные изменения в шаблоны URL проекта, затрагивая только один файл.
О том, почему аргумент name полезен, см. в разделе Именование шаблонов URL.
re_path()
-
re_path(route, view, kwargs=None, name=None)
Возвращает элемент для включения в urlpatterns. Например:
from django.urls import include, re_path
urlpatterns = [
re_path(r"^index/$", views.index, name="index"),
re_path(r"^bio/(?P<username>\w+)/$", views.bio, name="bio"),
re_path(r"^blog/", include("blog.urls")),
...,
]
Аргумент route должен быть строкой или gettext_lazy() (см. Перевод шаблонов URL), содержащей регулярное выражение, совместимое с модулем re Python. Обычно для строк используется синтаксис необработанных строк (r''), чтобы можно было включать последовательности вроде \d без необходимости экранировать обратную косую черту ещё одной обратной косой чертой. При совпадении захваченные группы регулярного выражения передаются в представление — как именованные аргументы, если у групп заданы имена, и как позиционные аргументы в противном случае. Значения передаются в виде строк без преобразования типов.
Если route заканчивается на $, весь запрошенный URL, сопоставляемый с path_info, должен соответствовать шаблону регулярного выражения (используется re.fullmatch()).
Аргументы view, kwargs и name те же, что и для path().
include()
-
include(module, namespace=None)[исходный код] - include(pattern_list)
- include((pattern_list, app_namespace), namespace=None)
-
Функция принимает полный путь импорта Python к другому модулю URLconf, который следует «включить» в этом месте. При необходимости также можно указать пространство имён приложения и пространство имён экземпляра, в которые будут включены записи.
Обычно пространство имён приложения должно задаваться включаемым модулем. Если пространство имён приложения задано, аргумент
namespaceможно использовать для установки другого пространства имён экземпляра.В качестве аргумента
include()также принимает итерируемый объект, возвращающий шаблоны URL, или кортеж из двух элементов, содержащий такой итерируемый объект и имена пространств имён приложения.
См. разделы Включение других URLconf и Пространства имён URL и включаемые URLconf.
register_converter()
-
register_converter(converter, type_name)[исходный код]
Функция для регистрации конвертера, используемого в шаблонах route функции path().
Аргумент converter — это класс конвертера, а type_name — имя конвертера, используемое в шаблонах путей. Пример см. в разделе Регистрация пользовательских конвертеров путей.
Функции django.conf.urls для использования в URLconf
static()
-
static.static(prefix, view=django.views.static.serve, **kwargs)
Вспомогательная функция, возвращающая шаблон URL для обслуживания файлов в режиме отладки:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
handler400
-
handler400
Вызываемый объект или строка, представляющая полный путь импорта Python к представлению, которое следует вызвать, если HTTP-клиент отправил запрос, вызвавший ошибку с кодом состояния 400.
По умолчанию используется django.views.defaults.bad_request(). Если вы реализуете пользовательское представление, убедитесь, что оно принимает аргументы request и exception и возвращает HttpResponseBadRequest.
handler403
-
handler403
Вызываемый объект или строка, представляющая полный путь импорта Python к представлению, которое следует вызвать, если у пользователя нет разрешений, необходимых для доступа к ресурсу.
По умолчанию используется django.views.defaults.permission_denied(). Если вы реализуете пользовательское представление, убедитесь, что оно принимает аргументы request и exception и возвращает HttpResponseForbidden.
handler404
-
handler404
Вызываемый объект или строка, представляющая полный путь импорта Python к представлению, которое следует вызвать, если ни один из шаблонов URL не совпал.
По умолчанию используется django.views.defaults.page_not_found(). Если вы реализуете пользовательское представление, убедитесь, что оно принимает аргументы request и exception и возвращает HttpResponseNotFound.
handler500
-
handler500
Вызываемый объект или строка, представляющая полный путь импорта Python к представлению, которое следует вызвать в случае ошибок сервера. Ошибки сервера возникают при ошибках времени выполнения в коде представления.
По умолчанию используется django.views.defaults.server_error(). Если вы реализуете пользовательское представление, убедитесь, что оно принимает аргумент request и возвращает HttpResponseServerError.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/6.0/ref/urls/