gpt4 book ai didi

django - 缺少 1 个必需的位置参数 : 'pk'

转载 作者:行者123 更新时间:2023-12-02 09:00:53 25 4
gpt4 key购买 nike

我是 Django 新手并使用react。我上周已经遇到了这个错误,当时是请求 URL 错误。昨天我更改了后端设计,现在又出现错误。

这是我的网址=>

urlpatterns = [
url(r'^allowances_mas/', AllowanceAPIView.as_view()),
url(r'^allowances_mas/(?P<pk>\d+)/$', AllowanceAPIView.as_view()),....

这是我在 View 中放置的方法,

def put(self,request,pk):
save_allowance = get_object_or_404(Allowance.objects.all(),pk=pk)
data = request.data.get('allowance')
serializer = AllowanceSerializer(instance=save_allowance,data=data,partial=True)

if serializer.is_valid():
allowance_saved=serializer.save()
return Response({"success":"Allowance '{}' updated successfully".format(allowance_saved.AllowID)})
else:
return Response({"fail":"'{}'".format(serializer.errors)})

这是来自 React axios 的 url 请求 =>

  axios.put('http://127.0.0.1:8000/api/allowances_mas/1/', { allowance },{
headers: {
'Content-Type': 'application/json'
}
})
.then(res => {
axios.get('http://127.0.0.1:8000/api/allowances_mas/')
.then(res=>{
const resallowance=res.data.allowance;

this.setState({
allowances:resallowance
});
})
})
.catch(err=>{
console.log("error",err);
})
.finally(fin=>{
console.log(fin);
})

我可以执行 get 和 post 方法,但由于此错误, put 和 delete 不能。我设置了 pk key ,为什么仍然出现错误?谢谢。

最佳答案

发生错误是因为您在 put 方法中将 pk 作为参数传递。

def put(self,request,pk):

相反,使用这个:

def put(self, request, *args, **kwargs):

要从传递的 URL 获取 pk,请使用:

pk = self.kwargs.get('pk')

所以你的代码应该是这样的:

def put(self,request, *args, **kwargs):
pk = self.kwargs.get('pk')
save_allowance = get_object_or_404(Allowance.objects.all(), pk=pk)
data = request.data.get('allowance')
serializer = AllowanceSerializer(instance=save_allowance,data=data,partial=True)

if serializer.is_valid():
allowance_saved=serializer.save()
return Response({"success":"Allowance '{}' updated successfully".format(allowance_saved.AllowID)})
else:
return Response({"fail":"'{}'".format(serializer.errors)})

此外,更改 URL 模式的顺序:

urlpatterns = [
url(r'^allowances_mas/(?P<pk>\d+)/$', AllowanceAPIView.as_view()),
url(r'^allowances_mas/', AllowanceAPIView.as_view()),
]

关于django - 缺少 1 个必需的位置参数 : 'pk' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56845135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com