小编use*_*042的帖子

Django休息更改用户密码视图

我正在使用Django Rest创建一个简单的API.我需要创建一个用户可以更改他/她的密码的视图.我使用默认的Django用户模型和一个简单的UserSerializer.有方法被调用,set_password但我无法找到一种方法与用户seriliazer正确使用它.我无法在任何地方找到任何解决方案.

UserSelializer:

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('id', "username", 'email', 'first_name', 'last_name', 'password')
Run Code Online (Sandbox Code Playgroud)

View(ClassedBased):这是一个例子(我不知道我在这做什么):

    class UserChangePassword(APIView):

        def patch(self, request):
            user = self.request.user
            serialized = UserSerializer(data=request.DATA)
            if serialized.is_valid():
                user.set_password(serialized.data['password'])
                user.save()
                return Response(status=status.HTTP_205_RESET_CONTENT)
            else:
            return Response(serialized.errors, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)

请注意,我想发布一个json脚本来更改为密码.像这样的东西:

 {
    "old_password": "123", 
    "new_password": "12345"
}
Run Code Online (Sandbox Code Playgroud)

python django rest django-rest-framework

7
推荐指数
1
解决办法
8006
查看次数

Django rest框架自动填充user.id

我无法找到一种方法来自动填充我的模型的字段所有者.我正在使用DRF.如果我使用ForeignKey,用户可以从下拉框中选择所有者,但没有任何意义.PLZ HELP我不能使它工作.views.py不包括因为我认为它没有任何关系.

models.py

class Note(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    cr_date = models.DateTimeField(auto_now_add=True)
    owner = models.CharField(max_length=100)
  # also tried:
  # owner = models.ForeignKey(User, related_name='entries')

class Meta:
    ordering = ('-cr_date',)

def __unicode__(self):
    return self.title
Run Code Online (Sandbox Code Playgroud)

serializers.py

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('id', "username", 'first_name', 'last_name', )

class NoteSerializer(serializers.ModelSerializer):
    owner = request.user.id <--- wrong , but is what a need.
    # also tried :
    # owner = UserSerializer(required=True)

    class Meta:
        model = Note
        fields = ('title', 'body' )
Run Code Online (Sandbox Code Playgroud)

python django rest auto-populate

4
推荐指数
1
解决办法
2864
查看次数