Функции django.urls для использования в URLconfs¶
путь()¶
- 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 должен быть строкой или 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 — это функция представления или результат as_view() для представлений на основе классов. Это также может быть django.urls.include().
Когда Django находит соответствующий шаблон, он вызывает указанную функцию просмотра с объектом HttpRequest в качестве первого аргумента и любыми «захваченными» значениями из маршрута в качестве аргументов ключевого слова.
кварги¶
Аргумент kwargs позволяет передавать дополнительные аргументы функции или методу представления. Пример смотрите в Передача дополнительных аргументов в представление.
name¶
Присвоение имени URL-адресу позволит вам однозначно ссылаться на него из любого места Django, особенно из шаблонов. Эта мощная функция позволяет вам вносить глобальные изменения в шаблоны URL-адресов вашего проекта, затрагивая только один файл.
См. Именование шаблонов URL-адресов, чтобы узнать, почему аргумент 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, должен соответствовать шаблону регулярного выражения (используется re.fullmatch()).
Аргументы view, kwargs и name такие же, как и для path().
включить()¶
- include(module, namespace=None)¶
- include(pattern_list)
- include((pattern_list, app_namespace), namespace=None)
Функция, которая передает полный путь импорта Python к другому модулю URLconf, который должен быть «включен» в это место. При желании также можно указать пространство имен приложения и пространство имен экземпляра, в которое будут включены записи.
Обычно пространство имен приложения должно определяться включенным модулем. Если задано пространство имен приложения, аргумент namespace можно использовать для установки другого пространства имен экземпляра.
include()также принимает в качестве аргумента либо итерацию, которая возвращает шаблоны URL, либо кортеж из двух элементов, содержащий такую итерацию плюс имена пространств имен приложения.
См. include-other-urlconfs и Пространства имен в URL -ах и include.
register_converter()¶
- register_converter(converter, type_name)¶
Функция регистрации конвертера для использования в path``route`()s.
Аргумент converter представляет собой класс конвертера, а type_name — это имя конвертера, которое будет использоваться в шаблонах путей. Пример см. в разделе «Регистрация пользовательских-путевых преобразователей».
Функции django.conf.urls для использования в URLconfs¶
статический()¶
- 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)
обработчик400¶
- 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.
обработчик500¶
- handler500¶
Вызываемый объект или строка, представляющая полный путь импорта Python к представлению, которое следует вызывать в случае ошибок сервера. Ошибки сервера возникают, когда у вас есть ошибки времени выполнения в коде представления.
По умолчанию это django.views.defaults.server_error(). Если вы реализуете собственное представление, убедитесь, что оно принимает аргумент request и возвращает HttpResponseServerError.