django.urls
функции для использования в URLconfs¶
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 вашего проекта, касаясь только одного файла.
О том, почему аргумент Naming URL patterns полезен, см. в name
.
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), содержащей регулярное выражение, совместимое с модулем Python re
. Строки обычно используют синтаксис необработанных строк (r''
), поэтому они могут содержать последовательности типа \d
без необходимости экранировать обратный слеш другим обратным слешем. Когда происходит совпадение, захваченные группы из регулярного выражения передаются в представление - как именованные аргументы, если группы именованные, и как позиционные аргументы в противном случае. Значения передаются как строки, без преобразования типов.
Когда route
заканчивается на $
, весь запрашиваемый URL, сопоставленный с path_info
, должен соответствовать шаблону регулярного выражения (используется:py:func:re.fullmatch).
Аргументы view
, kwargs
и name
такие же, как и для path()
.
include()
¶
-
include
(module, namespace=None)¶ -
include
(pattern_list) -
include
((pattern_list, app_namespace), namespace=None) Функция, принимающая полный путь импорта Python к другому модулю URLconf, который должен быть «включен» в это место. Опционально можно также указать application namespace и instance namespace, в которые будут включены записи.
Обычно пространство имен приложения должно быть задано включенным модулем. Если пространство имен приложения задано, аргумент
namespace
может быть использован для задания другого пространства имен экземпляра.include()
также принимает в качестве аргумента либо итерабель, возвращающий шаблоны URL, либо кортеж, содержащий такую итерабель плюс имена пространств имен приложений.Параметры:
См. Включение других URLconfs и Пространства имен URL и включенные URLconfs.
register_converter()
¶
-
register_converter
(converter, type_name)¶
Функция для регистрации конвертера для использования в path()
route
s.
Аргумент converter
- это класс конвертера, а type_name
- имя конвертера, которое следует использовать в шаблонах путей. Пример см. в Регистрация пользовательских конвертеров пути.
Не рекомендуется, начиная с версии 5.1: Переопределение существующих преобразователей не рекомендуется.
django.conf.urls
функции для использования в URLconfs¶
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
.