Django rest framework 如何在Django中的一条路由中使用不同的权限?
我正在尝试创建一个Django路由来创建用户。其中一个请求应未经验证,其他请求应经过验证 我试图覆盖这些方法,但随后UI就崩溃了 对我来说,官方教程中有太多的文本,我不需要使用Web框架。 我想要一些简单的路由,而不是框架提供的一些奇特的CRUD。大部分我根本不需要的积垢 我想创建一个路由来创建一个用户,并使其他路由只经过身份验证。 我想出了一些可行的方法(至少UI不会崩溃):Django rest framework 如何在Django中的一条路由中使用不同的权限?,django-rest-framework,Django Rest Framework,我正在尝试创建一个Django路由来创建用户。其中一个请求应未经验证,其他请求应经过验证 我试图覆盖这些方法,但随后UI就崩溃了 对我来说,官方教程中有太多的文本,我不需要使用Web框架。 我想要一些简单的路由,而不是框架提供的一些奇特的CRUD。大部分我根本不需要的积垢 我想创建一个路由来创建一个用户,并使其他路由只经过身份验证。 我想出了一些可行的方法(至少UI不会崩溃): views.py: from django.contrib.auth.models import User from
views.py
:
from django.contrib.auth.models import User
from rest_framework import viewsets
from rest_framework import permissions
from tutorial.quickstart.serializers import UserSerializer
from rest_framework import mixins
class UserNoAuthViewSet(mixins.CreateModelMixin,
viewsets.GenericViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [] ############################## allowed for non-users
class UserAuthViewSet(mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
mixins.ListModelMixin,
viewsets.GenericViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [permissions.IsAuthenticated] ############ users-only
from django.contrib import admin
from django.urls import include, path
from rest_framework import routers
from tutorial.quickstart import views_user
router = routers.DefaultRouter()
router.register(r'users', views_user.UserNoAuthViewSet)
router.register(r'users', views_user.UserAuthViewSet)
urlpatterns = [
#path('admin/', admin.site.urls),
path('', include(router.urls)),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
url.py
:
from django.contrib.auth.models import User
from rest_framework import viewsets
from rest_framework import permissions
from tutorial.quickstart.serializers import UserSerializer
from rest_framework import mixins
class UserNoAuthViewSet(mixins.CreateModelMixin,
viewsets.GenericViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [] ############################## allowed for non-users
class UserAuthViewSet(mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
mixins.ListModelMixin,
viewsets.GenericViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [permissions.IsAuthenticated] ############ users-only
from django.contrib import admin
from django.urls import include, path
from rest_framework import routers
from tutorial.quickstart import views_user
router = routers.DefaultRouter()
router.register(r'users', views_user.UserNoAuthViewSet)
router.register(r'users', views_user.UserAuthViewSet)
urlpatterns = [
#path('admin/', admin.site.urls),
path('', include(router.urls)),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
如何更改这两个路由,以便它们正确显示在UI中并预览创建的用户?创建工作正常,但预览不正常。我认为路由器不包括第二条路线