snippets
и users
, но у нас нет единой точки входа для API. Для ее создания мы используем обычную функцию-представление с декоратором @api_view
, который мы видели раньше. Добавьте в snippets/views.py
:reverse()
из состава DRF, чтобы вернуть полностью сформированные URL-ы. Во-вторых, шаблоны URL определены с помощью удобных имен, которые мы опишем позднее в snippets/urls.py
..get()
. Добавьте в ваш snippets/views.py
:snippets/urls.py
:HyperlinkedModelSerializer
в качестве родительского класса, вместо ModelSerializer
.HyperlinkedModelSerializer
от класса ModelSerializer
заключается в следующем:HyperlinkedIdentityField
;HyperlinkedRelatedField
вместо PrimaryKeyRelatedField
;snippets/serializers.py
:highlight
. Это поле - того же типа, что и поле url
, за исключением того, что указывает на шаблон URL 'snippet-highlight'
, вместо шаблона'snippet-detail'
.'.json'
, нам необходимо пометить поле подсвеченного кода, как возвращающее '.html'
в любом случае, вне зависимости от того, что было запрошено.'user-list'
и 'snippet-list'
.'snippet-highlight'
.'snippet-detail'
.'url'
поле, которое ссылается на '{название_модели}-detail'
, которое, в нашем случае будет 'snippet-detail'
и 'user-detail'
.snippets/urls.py
должен выглядеть вот так:settings.py
. Добавьте следующую настройку:'REST_FRAMEWORK'
, что позволяет их отделить от остальных настроек проекта.'highlight'
у объектов сниппетов, которые будут возвращать вам HTML представление подсвеченного кода.ViewSets
) и матршрутизаторы (Routers
), чтобы уменьшить количество кода, необходимого для построения API.