django.conf.urls служебные функции
patterns()
-
patterns(prefix, pattern_description, ...)[source]
Устаревшая с версии 1.8: urlpatterns должна быть простым списком экземпляров django.conf.urls.url().
Функция, которая принимает префикс и произвольное количество шаблонов URL и возвращает список шаблонов URL в формате, необходимом Django.
Первый аргумент функции patterns() — строка prefix. Вот пример URLconf из Обзора Django:
from django.conf.urls import patterns, url
urlpatterns = patterns('',
url(r'^articles/([0-9]{4})/$', 'news.views.year_archive'),
url(r'^articles/([0-9]{4})/([0-9]{2})/$', 'news.views.month_archive'),
url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', 'news.views.article_detail'),
)
В этом примере у каждого представления есть общий префикс — 'news.views'. Вместо того, чтобы вводить его для каждой записи в urlpatterns, вы можете использовать первый аргумент функции patterns() для указания префикса, который будет применяться к каждой функции представления.
Учитывая это, вышеприведенный пример можно записать более лаконично так:
from django.conf.urls import patterns, url
urlpatterns = patterns('news.views',
url(r'^articles/([0-9]{4})/$', 'year_archive'),
url(r'^articles/([0-9]{4})/([0-9]{2})/$', 'month_archive'),
url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', 'article_detail'),
)
Обратите внимание, что вы не ставите конечную точку (".") в префиксе. Django автоматически добавляет её.
Остальные аргументы должны быть кортежами в таком формате:
(regular expression, Python callback function [, optional_dictionary [, optional_name]])
Параметры optional_dictionary и optional_name описаны в Передача дополнительных параметров функциям представления.
Примечание
Поскольку patterns() — это вызов функции, она принимает не более 255 аргументов (в данном случае — шаблоны URL). Это ограничение применимо ко всем вызовам функций Python. На практике это редко вызывает проблемы, так как обычно вы структурируете свои шаблоны URL модульно, используя include() секции. Однако, если вдруг вы столкнетесь с ограничением в 255 аргументов, помните, что patterns() возвращает список Python, поэтому вы можете разделить построение списка.
urlpatterns = patterns('',
...
)
urlpatterns += patterns('',
...
)
Списки Python имеют неограниченный размер, поэтому нет ограничений на количество шаблонов URL, которые вы можете создать. Единственное ограничение заключается в том, что вы можете создать только 254 за раз (255-й аргумент — это первоначальный префикс).
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)
Аргумент view изменился со строки ('django.views.static.serve') на функцию.
url()
-
url(regex, view, kwargs=None, name=None, prefix='')[source]
urlpatterns должен быть списком экземпляров url(). Например:
urlpatterns = [
url(r'^index/$', index_view, name="main-view"),
...
]
Эта функция принимает пять аргументов, большинство из которых являются необязательными:
url(regex, view, kwargs=None, name=None, prefix='')
Параметр kwargs позволяет передавать дополнительные аргументы функции или методу представления. См. Передача дополнительных параметров функциям представления для примера.
См. Именование шаблонов URL, чтобы понять, почему параметр name полезен.
Устаревшая с версии 1.8: Поддержка аргументов view типа строка устарела и будет удалена в Django 1.10. Вместо этого передавайте вызываемый объект.
Параметр prefix имеет тот же смысл, что и первый аргумент patterns(), и имеет значение только тогда, когда вы передаёте строку в качестве параметра view.
include()
-
include(module, namespace=None, app_name=None)[source] -
include(pattern_list) -
include((pattern_list, app_namespace), namespace=None) -
include((pattern_list, app_namespace, instance_namespace)) -
Функция, которая принимает полный путь импорта Python к другому модулю URLconf, который должен быть «включён» в это место. Также можно указать необязательно пространство имён приложения и экземпляра, где будут включены записи.
Как правило, пространство имён приложения должно быть указано включенным модулем. Если пространство имён приложения установлено, аргумент
namespaceможет использоваться для установки другого пространства имён экземпляра.Функция
include()также принимает в качестве аргумента либо итерируемый объект, возвращающий шаблоны URL, либо кортеж из двух элементов: такой итерируемый объект и имена пространств имён приложения, либо кортеж из трёх элементов: итерируемый объект и имена пространств имён приложения и экземпляра.Параметры: - module — Модуль URLconf (или имя модуля)
- namespace (строка) — Пространство имён экземпляра для включаемых записей URL
- app_name (строка) — Пространство имён приложения для включаемых записей URL
-
pattern_list — Итерируемый объект экземпляров
django.conf.urls.url() - app_namespace (строка) — Пространство имён приложения для включаемых записей URL
- instance_namespace (строка) — Пространство имён экземпляра для включаемых записей URL
См. Включение других URLconf и Пространства имён URL и включенные URLconf.
Устаревшая с версии 1.9: Поддержка аргумента app_name устарела и будет удалена в Django 2.0. Укажите app_name как описано в Пространства имён URL и включенные URLconf вместо этого.
Поддержка передачи 3-х элементов в кортеже также устарела и будет удалена в Django 2.0. Передайте кортеж из двух элементов: список шаблонов и пространство имён приложения, и используйте аргумент namespace вместо этого.
Наконец, поддержка пространства имён экземпляра без пространства имён приложения устарела и будет удалена в Django 2.0. Укажите пространство имён приложения или удалите пространство имён экземпляра.
handler400
-
handler400
Вызываемый объект или строка, представляющая полный путь импорта Python к представлению, которое должно вызываться, если HTTP-клиент отправил запрос, вызвавший ошибку, и ответ со статусом 400.
По умолчанию это 'django.views.defaults.bad_request'. Если вы реализуете пользовательское представление, убедитесь, что оно возвращает HttpResponseBadRequest.
См. документацию по представлению 400 (ошибка запроса) для получения дополнительной информации.
handler403
-
handler403
Вызываемый объект или строка, представляющая полный путь импорта Python к представлению, которое должно вызываться, если у пользователя нет необходимых разрешений для доступа к ресурсу.
По умолчанию это 'django.views.defaults.permission_denied'. Если вы реализуете пользовательское представление, убедитесь, что оно возвращает HttpResponseForbidden.
См. документацию по представлению 403 (HTTP Запрещено) для получения дополнительной информации.
handler404
-
handler404
Вызываемый объект или строка, представляющая полный путь импорта Python к представлению, которое должно вызываться, если ни один из шаблонов URL не соответствует запросу.
По умолчанию это 'django.views.defaults.page_not_found'. Если вы реализуете пользовательское представление, убедитесь, что оно возвращает HttpResponseNotFound.
См. документацию по представлению 404 (HTTP Не найдено) для получения дополнительной информации.
handler500
-
handler500
Вызываемый объект или строка, представляющая полный путь импорта Python к представлению, которое должно вызываться в случае возникновения ошибок сервера. Ошибки сервера возникают при возникновении ошибок выполнения в коде представления.
По умолчанию это 'django.views.defaults.server_error'. Если вы реализуете пользовательское представление, убедитесь, что оно возвращает HttpResponseServerError.
См. документацию по представлению 500 (HTTP Внутренняя ошибка сервера) для получения дополнительной информации.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.9/ref/urls/