Использование инструментария Django OAuth в пользовательских представлениях - PullRequest
0 голосов
/ 13 ноября 2018

Я использую инструментарий Django OAuth, чтобы ограничить доступ к моему API. Проблема в том, что я не уверен, как использовать это для своих собственных взглядов. У него есть свои собственные встроенные представления «Приложения», для которых я вижу, что он работает, но не уверен, как он может работать для меня.

Я пытался использовать их общие классы (https://django -oauth-toolkit.readthedocs.io / en / latest / views / class_based.html ), но безрезультатно:

views.py:

class PostCarFax(ReadWriteScopedResourceMixin, ProtectedResourceView):
    queryset = CarFax.objects.all()
    serializer_class = CarFaxSerializer

Это дает мне AttributeError: type object 'PostCarFax' has no attribute 'get_extra_actions' ошибку

Интересно, это так, как он определяет свои URL? Из их кода:

urls.py:

from django.conf.urls import url

from . import views


app_name = "oauth2_provider"


base_urlpatterns = [
    url(r"^authorize/$", views.AuthorizationView.as_view(), name="authorize"),
    url(r"^token/$", views.TokenView.as_view(), name="token"),
    url(r"^revoke_token/$", views.RevokeTokenView.as_view(), name="revoke-token"),
    url(r"^introspect/$", views.IntrospectTokenView.as_view(), name="introspect"),
]


management_urlpatterns = [
    # Application management views
    url(r"^applications/$", views.ApplicationList.as_view(), name="list"),
    url(r"^applications/register/$", views.ApplicationRegistration.as_view(), name="register"),
    url(r"^applications/(?P<pk>[\w-]+)/$", views.ApplicationDetail.as_view(), name="detail"),
    url(r"^applications/(?P<pk>[\w-]+)/delete/$", views.ApplicationDelete.as_view(), name="delete"),
    url(r"^applications/(?P<pk>[\w-]+)/update/$", views.ApplicationUpdate.as_view(), name="update"),
    # Token management views
    url(r"^authorized_tokens/$", views.AuthorizedTokensListView.as_view(), name="authorized-token-list"),
    url(r"^authorized_tokens/(?P<pk>[\w-]+)/delete/$", views.AuthorizedTokenDeleteView.as_view(),
        name="authorized-token-delete"),
]

Думаю, я мог бы определить свои собственные взгляды там? Вот мой urls.py:

router = routers.DefaultRouter()
router.register(r'post_carfax', views.PostCarFax)
admin.autodiscover()

from rest_framework import generics, permissions, serializers

from oauth2_provider.contrib.rest_framework import TokenHasReadWriteScope, TokenHasScope


urlpatterns = [
    url(r'^api/v1/', include(router.urls)),
    url(r'^admin/', admin.site.urls),
    url('o/', include('oauth2_provider.urls', namespace='oauth2_provider')),
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...