Добавление API-интерфейса APIView в Django REST Framework Browsable API
Я разрабатывал бэкэнд REST с помощью Django REST Framework.
Тем не менее, у меня возникли проблемы с добавлением экземпляра APIView в API для просмотра веб-страниц.
документация и предыдущий ответ предполагает, что все, что я должен сделать добавляет docstring.
Это не сработало для меня.
Я предполагаю, что API-интерфейс, доступный только для просмотра, отображает конечные точки Viewset, зарегистрированные на маршрутизаторе.
Если это так, как я могу зарегистрировать классы APIView для маршрутизатора?
Ниже мой текущий код маршрутизатора:
router = DefaultRouter(trailing_slash=False)
router.register(r'tokens', TokenViewSet, base_name='token')
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^api/', include(router.urls)),
url(r'^api/register$', RegisterUser.as_view(), name='register_user'),
url(r'^api/auth$', ObtainAuthToken.as_view(), name='obtain_token'),
url(r'^api/me$', ObtainProfile.as_view(), name='obtain_profile'),
url(r'^api/recover$', FindUsername.as_view(), name='recover_username'),
)
В настоящее время отображается только конечная точка токена.
Спасибо.
Ответы
Ответ 1
Маршрутизаторы не предназначены для обычных видов. Вам нужно использовать ViewSet, если вы хотите, чтобы вы указали URL-адрес вашего маршрутизатора.
У меня такой же вопрос. Может быть, вы можете это сделать:
Как я могу зарегистрировать на моем маршрутизаторе один вид (а не viewet)?
Ответ 2
Я считаю, что строка, которая включает в себя router.urls, "вытесняет" другие URL-адреса, начиная с api. Попробуйте изменить,
url(r'^api/', include(router.urls)),
к
url(r'^tokenapi/', include(router.urls)),
Если это работает, попробуйте переместить строку с include, чтобы она была последней строкой в списке шаблонов url и изменила tokenapi на api.
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^api/register$', RegisterUser.as_view(), name='register_user'),
url(r'^api/auth$', ObtainAuthToken.as_view(), name='obtain_token'),
url(r'^api/me$', ObtainProfile.as_view(), name='obtain_profile'),
url(r'^api/recover$', FindUsername.as_view(), name='recover_username'),
url(r'^api/', include(router.urls)),
)