我正在尝试创建一个端点来编辑下面的用户模型和自定义配置文件模型。
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=500)
location = models.CharField(max_length=50)
image = models.ImageField(default='default.jpg', upload_to='profile')
在常规的django中,我会这样做:
views.py
def edit_profile(request):
if request.method == 'POST':
form = EditProfileForm(request.POST, instance=request.user)
extended_profile_form = ProfileForm(request.POST,
request.FILES,
instance=request.user.profile)
if form.is_valid() and extended_profile_form.is_valid():
form.save()
extended_profile_form.save()
return redirect('accounts:profile')
else:
form = EditProfileForm(instance=request.user)
extended_profile_form = ProfileForm(instance=request.user.profile)
context = {
'form':form,
'extended_profile_form':extended_profile_form
}
return render(request, 'accounts/edit-profile.html', context)
django rest框架等效于什么?
我尝试过:
views.py ((Django Rest Framework)] >>
@api_view(['GET','PUT']) def profile(request): if request.method == 'GET': user = User.objects.filter(username=request.user) profile_user = Profile.objects.filter(user=request.user) serializer_user = UserSerializer(user, many=True) serializer_profile_user = ProfileSerializer(profile_user, many=True) result = {'serializer_user': serializer_user.data, 'serializer_profile_user': serializer_profile_user.data} return Response(result) elif request.method == 'PUT': user = User.objects.filter(username=request.user) profile_user = Profile.objects.filter(user=request.user) serializer_user = UserSerializer(user, data=request.data) serializer_profile_user = ProfileSerializer(profile_user, data=request.data) if serializer_user.is_valid() and serializer_profile_user.is_valid(): serializer_user.save() serializer_profile_user.save() result = {'serializer_user': serializer_user.data, 'serializer_profile_user': serializer_profile_user.data} return Response(result) result = {'serializer_user': serializer_user.data, 'serializer_profile_user': serializer_profile_user.data} return Response(result.errors, status=status.HTTP_400_BAD_REQUEST)
当我浏览端点时,它确实显示
serializer_user
和serializer_profile_user
数据,但是我无法使用DRF可浏览API编辑任何这些数据。
我是否认为上述代码与普通django的代码中的代码等效,以编辑用户的个人资料?
我正在尝试创建一个端点来编辑下面的用户模型和自定义配置文件模型。 models.py类Profile(models.Model):用户= models.OneToOneField(User,on_delete = models.CASCADE)...
对我来说很好,但是您需要替换它:
看。您可以使其更容易。让我们以Post模型为例: