我是Django的新手。
最初我有基于功能的视图-
@api_view(['GET', 'PUT', 'DELETE'])
def detail(self,request, pk):
"""
Retrieve, update or delete a product instance.
"""
try:
product = latesttrial.objects.get(pk=pk)
newproduct = latesttrial.objects.all()
except latesttrial.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
serializer = latestSerializer(product,context={'request': request})
return Response(serializer.data)
elif request.method == 'PUT':
serializer = latestSerializer(product, data=request.data,context={'request': request})
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
然后它给出了这个错误-
TypeError: detail() missing 1 required positional argument: 'pk'
为此,我根据此答案进行了这些更改-缺少1个必需的位置参数:“ pk”
然后我有了基于功能的视图
@api_view(['GET', 'PUT', 'DELETE'])
def detail(request, *args, **kwargs):
"""
Retrieve, update or delete a product instance.
"""
try:
pk = self.kwargs.get('pk')
product = latesttrial.objects.get(pk=pk)
newproduct = latesttrial.objects.all()
except latesttrial.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
pk = self.kwargs.get('pk')
serializer = latestSerializer(product,context={'request': request})
return Response(serializer.data)
elif request.method == 'PUT':
pk = self.kwargs.get('pk')
serializer = latestSerializer(product, data=request.data,context={'request': request})
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
然后我有这个错误-
TypeError: detail() missing 1 required positional argument: 'request'
这是我的看法-
from django.conf.urls import url, include
from rest_framework.urlpatterns import format_suffix_patterns
from .views import partial, Detailspartial, detail#
urlpatterns = [
url(r'partial',partial,name="partial"),
url(r'pardelete/(?P<pk>[0-9]+)/$', Detailspartial.as_view(), name="Partial details"),
url(r'detail',detail,name="newfunction"),
]
我应该如何解决我的问题。请帮忙!!
您可以将更改还原到以前的版本并进行以下更改:
url(r'detail',detail,name="newfunction"),
对此:
url(r'detail(?P<pk>[0-9]+)/$',detail,name="newfunction"),
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句