Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从db Django Rest_框架视图函数中删除用户_Python_Django_Django Rest Framework - Fatal编程技术网

Python 从db Django Rest_框架视图函数中删除用户

Python 从db Django Rest_框架视图函数中删除用户,python,django,django-rest-framework,Python,Django,Django Rest Framework,我对django_REST框架还很陌生。我希望在收到delete请求时能够从数据库中删除用户 以下是我的看法: class RetrieveUsersView(generics.ListCreateAPIView): """Retrieves all Users""" serializer_class = UserSerializer authentication_classes = (authentication.Toke

我对django_REST框架还很陌生。我希望在收到
delete
请求时能够从数据库中删除用户

以下是我的看法:

class RetrieveUsersView(generics.ListCreateAPIView):
  """Retrieves all Users"""
  serializer_class = UserSerializer
  authentication_classes = (authentication.TokenAuthentication,)
  permission_classes = (permissions.IsAuthenticated,)

  queryset = get_user_model().objects.all()
这是我的序列化程序:

class UserSerializer(serializers.ModelSerializer):
  """Serializer for the users object"""

  class Meta:
    model = get_user_model()
    fields = ('email', 'password', 'name')
    extra_kwargs = {'password': {'write_only': True, 'min_length': 5}}
  
  def create(self, validated_data):
    """Create a new user with encrypted password and return it"""
    return get_user_model().objects.create_user(**validated_data)

  def update(self, instance, validated_data):
    """Update a user, setting the password correctly and return it"""
    password = validated_data.pop('password', None)
    user = super().update(instance, validated_data)

    if password:
      user.set_password(password)
      user.save()
    
    return user
以下是我的网址:

urlpatterns = [
  path('create/', views.CreateUserView.as_view(), name='create'),
  path('token/', views.CreateTokenView.as_view(), name='token'),
  path('me/', views.ManageUserView.as_view(), name='me'),
  path('all_users/', views.RetrieveUsersView.as_view(), name='all_users')
]
据我所知,Django rest内置了允许
DELETE
请求的类。但是,当我在本地主机上查看api时,我只能根据我的
RetrieveUsersView
类查看所有注册用户

我希望url是这样的

/api/users/all_users/1
然后删除该用户。对于如何获得该功能,我有点困惑。

您可以使用,它允许您轻松地执行删除操作

为此,创建一个新的视图类,如下所示:

class DeleteUserAPI(generics.DestroyAPIView):
    serializer_class = UserSerializer
    authentication_classes = (authentication.TokenAuthentication,)
    permission_classes = (permissions.IsAuthenticated,)
    queryset = get_user_model().objects.all()

或者,也可以使用“太”来删除对象

urlpatterns = [
    path('delete-user/<int:pk>/', views.DeleteUserAPI.as_view(), name='delete-user'),
    # rest of your config
    path('create/', views.CreateUserView.as_view(), name='create'),
    path('token/', views.CreateTokenView.as_view(), name='token'),
    path('me/', views.ManageUserView.as_view(), name='me'),
    path('all_users/', views.RetrieveUsersView.as_view(), name='all_users')
]