2017-08-12 34 views
1

對不起,我的英語水平。現在我學習Django休息了,我不清楚如何保存用戶。例如:我想你JSON發送到服務器和服務器保存新的用戶沒有設置密碼。 Django的節省用戶不形

{"username": "bob", "password":"123321"}

意見我所著方法保存用戶

@csrf_exempt 
def request_user(request): 

    if request.method == "POST": 
     try: 
      data = JSONParser().parse(request) 
     except: 
      return JsonResponse({'message' : 'incorect json format'}, safe=False) 

     serializer = ProfileSerializer(data=data) 
     if serializer.is_valid(): 
      serializer.save() 
      return JsonResponse(serializer.data, status=201) 
     return JsonResponse(serializer.errors, status=400) 

我的串行

class ProfileSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = User 
     fields = ('id', 'username', 'email') 

但在管理我看到:沒有設置密碼。。爲什麼我的用戶沒有密碼保存?

回答

2

你有沒有領域密碼:

 fields = ('id', 'username', 'email') 

對於正確的密碼設置,你需要重寫創建方法

class UserSerializer(serializers.ModelSerializer): 

    password = serializers.CharField(write_only=True) 

    def create(self, validated_data): 

     user = User.objects.create(
      username=validated_data['username'] 
     ) 
     user.set_password(validated_data['password']) 
     user.save() 

     return user 
+0

謝謝您的回答。我加入IT領域在我的序列化,但現在我有**密碼無效格式或未知的哈希算法。** –

+1

我添加信息到答案 –

+0

哇,非常感謝! –