Django REST Framework
  • Overview
    • Django REST framework
    • Быстрый старт
      • Сериализация
      • Запросы-ответы
      • Представления-классы
      • Аутентификация/права доступа
      • Отношения и связи
      • Наборы представлений и роутеры
    • Навигация по API:
      • Запросы
      • Ответы
      • Представления
      • Общие представления
      • Viewsets
      • Маршрутизаторы
      • Парсеры
      • Рендереры
      • Сериализаторы
      • Поля сериализатора
      • Отношения сериализаторов
      • Валидаторы
      • Аутентификация
      • Разрешения
      • Кэширование
      • Дросселирование
      • Фильтрация
      • Пагинация
      • Версионирование
      • Согласование контента
      • Метаданные
      • Schemas
      • Cуффиксы формата
      • Возвращение URL-адресов
      • Исключения
      • Коды состояния
      • Тестирование
      • Настройки
  • Статьи
    • Статьи
      • AJAX, CSRF & CORS
      • The Browsable API
      • Улучшения в браузере
      • Документирование вашего API
      • HTML и формы
      • Интернационализация
      • REST, гипермедиа и HATEOAS
      • Вложенные сериализаторы с возможностью записи
Powered by GitBook
On this page
  • Возвращение URL-адресов
  • reverse
  • reverse_lazy

Was this helpful?

  1. Overview
  2. Навигация по API:

Возвращение URL-адресов

PreviousCуффиксы форматаNextИсключения

Last updated 1 year ago

Was this helpful?


источник:

  • reverse.py


Возвращение URL-адресов

Центральной особенностью, отличающей архитектурный стиль REST от других сетевых стилей, является его акцент на едином интерфейсе между компонентами.

— Рой Филдинг,

Как правило, лучше возвращать абсолютные URI из ваших Web API, например http://example.com/foobar, а не относительные URI, например /foobar.

Преимуществами этого являются:

  • Это более четко выражено.

  • Это оставляет меньше работы для ваших клиентов API.

  • Нет двусмысленности относительно значения строки, когда она встречается в таких форматах, как JSON, которые не имеют собственного типа URI.

  • Это упрощает такие вещи, как разметка HTML-представлений с гиперссылками.

Фреймворк REST предоставляет две служебные функции для упрощения возврата абсолютных URI из вашего Web API.

Использовать их не обязательно, но если вы их используете, то самоописывающийся API сможет автоматически делать для вас гиперссылки на свой вывод, что значительно упростит просмотр API.

reverse

Сигнатура: reverse(viewname, *args, **kwargs).

Вы должны включить запрос в качестве именованного аргумента в функцию, например:

from rest_framework.reverse import reverse
from rest_framework.views import APIView
from django.utils.timezone import now

class APIRootView(APIView):
    def get(self, request):
        year = now().year
        data = {
            ...
            'year-summary-url': reverse('year-summary', args=[year], request=request)
        }
        return Response(data)

reverse_lazy

Сигнатура: reverse_lazy(viewname, *args, **kwargs).

Как и в случае с функцией reverse, вы должны включить запрос в качестве именованного аргумента в функцию, например:

api_root = reverse_lazy('api-root', request=request)

Имеет такое же поведение, как , за исключением того, что возвращает полностью определенный URL, используя запрос для определения хоста и порта.

Имеет такое же поведение, как , за исключением того, что возвращает полностью определенный URL, используя запрос для определения хоста и порта.

Архитектурные стили и проектирование сетевых архитектур программного обеспечения
django.urls.reverse
django.urls.reverse_lazy