【问题标题】:TypeError: detail() missing 1 required positional argument: 'request'类型错误:detail() 缺少 1 个必需的位置参数:“请求”
【发布时间】:2020-05-13 23:28:34
【问题描述】:

我是 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' 

为此,我根据此答案进行了这些更改- missing 1 required positional argument: '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"),
]

我应该如何解决我的问题。请帮忙!!

【问题讨论】:

    标签: python django python-3.x django-rest-framework


    【解决方案1】:

    您可以将更改恢复到以前的版本并进行更改:

    url(r'detail',detail,name="newfunction"),
    

    到这里:

    url(r'detail(?P<pk>[0-9]+)/$',detail,name="newfunction"),
    

    【讨论】:

      猜你喜欢
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 2018-01-24
      • 2020-05-07
      • 2018-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多