【发布时间】:2021-12-11 23:47:52
【问题描述】:
我正在使用 django 用户、身份验证和权限模块,但是在 POST 请求中请求创建新用户时,它要求进行身份验证。
我得到了
{
"detail": "Authentication credentials were not provided."
}
这是我的 serializers.py
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ['id', 'username', 'password']
extra_kwargs = {
'password' : {
'write_only':True,
'required': True
}
}
def create(self, validated_data):
user = User.objects.create_user(**validated_data)
Token.objects.create(user=user) # create token for the user
return user
def update(self, instance, validated_data):
instance.username = validated_data['username']
instance.set_password(validated_data['password'])
instance.save()
return instance
views.py
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [IsAuthenticated, IsOwnerOfObject]
authentication_classes = (TokenAuthentication,)
urls.py
from django.urls import path, include
from .views import UserViewSet
from rest_framework.routers import DefaultRouter
router = DefaultRouter()
router.register('users', UserViewSet, basename = 'users')
urlpatterns = [
path('api/', include(router.urls)),
]
【问题讨论】:
-
我认为您在使用 here 时遇到了同样的问题。希望对你有帮助
-
我的问题不同,因为我使用视图集和 django 的用户模型来创建用户
标签: python django django-models django-rest-framework django-viewsets