[英]How can i use PUT method to edit Serialized data
我創建了一個編輯功能來編輯用戶的用戶名。
def edit(request):
if request.user.is_authenticated:
data = request.POST
s = UserSerializer(data=data)
u = s.is_valid()
if u:
s.update(request.user.username,request.POST['username'])
return JsonResponse(
{
'message' : 'profile edited!'
},status=201
)
else:
return JsonResponse(
{
'message' : 'you are not login!'
},status=401
)
我不知道應該在哪里使用 PUT 以及如何使用update()
。
這是我的序列化程序類:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = (
'username','email','password'
)
def validate_password(self,password):
password = make_password(password)
return password
def update(self,isinstance, validated_data):
instance.username = validated_data.get('username', instance.username)
instance.email = validated_data.get('email', instance.email)
return instance
在 Django rest 框架APIView 類中,您應該使用 from put 函數而不是編輯:
def put(request):
...
要使用序列化程序,請在您的視圖函數中使用serializers.save()
函數:
def put(request):
....
s.save()
save函數,基於view函數會調用update(對於put函數),create(對於post函數),destroy(對於delete函數)。 當您想從序列化器類實例化時,您必須將模型對象作為instance
傳遞,並將數據作為data
屬性傳遞。 總之,您的視圖函數將是這樣的:
class YourView(APIView)
def put(request):
if request.user.is_authenticated:
s = UserSerializer(instance=request.user, data=request.POST)
if s.is_valid():
s.save()
return Response(
{
'message': 'profile edited!'
}, status=201
)
else:
return Response(
{
'message' : 'you are not login!'
},status=401
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.