Я делаю регистрационный API, и, следуя документам, он рекомендовал использовать ViewSets
, поэтому я использовал ModelViewSet
, теперь, если я POST
на URL '*/api/register/'
, я ' Я сделаю регистрацию, если предоставлены действительные поля (используя .create()
метод), что идеально подходит для моего случая именно то, что мне нужно. но когда я хочу перечислить всех пользователей для администратора, запрос должен быть на тот же URL с методом GET
, что немного странно для доступа к '*/api/register/'
, чтобы увидеть пользователей ... поэтому я хотел изменить URL-адрес метода .list()
будет выглядеть примерно так: '*/api/users/'
, но я не могу найти, как это сделать. вот что я делаю до сих пор:
apis.py:
class RegisterApi(ModelViewSet):
serializer_class = UserSerializer
queryset = User.objects.filter(is_active=True)
def get_permissions(self):
if self.action == 'create':
return [permissions.AllowAny()]
else:
return [permissions.IsAdminUser()]
def create(self, request, *args, **kwargs):
response = super().create(request, *args, **kwargs)
if response:
response.data = dict(status=True, code=1)
return response
urls.py:
api_router = SimpleRouter()
api_router.register('register', apis.RegisterApi, basename='users')
extra_urls = [path('login/', apis.LoginApi.as_view()), ]
urlpatterns = [
# views urls
path('', views.Home.as_view(), name='home'),
path('dashboard/', views.Dashboard.as_view(), name='dashboard'),
path('login/', views.LoginView.as_view(), name='login'),
path('register/', views.RegistrationView.as_view(), name='register'),
# api urls
path('api/', include(extra_urls + api_router.urls)),
]
Любые намеки на это?