Ошибка типа: delete () отсутствует 1 обязательный позиционный аргумент: 'pk' django - PullRequest
0 голосов
/ 07 мая 2018

У меня есть представление в моем приложении Django, которое выглядит следующим образом

class DeployedContractsList(APIView):    
    def get_Contract(self, address):
        contracts = DeployedContracts.objects.all()
        if address:
            contracts = contracts.filter(
                Q(deployed_contract_address__iexact=address)
            )
        return contracts

    def get(self, request, email, format=None):
        service_providers = self.get_queryset(email)
        serializer = DeployedContractsSerializer(service_providers, many=True)
        return Response(data=serializer.data)


    def delete(self, request, pk, format=None):
        item = self.get_Contract(address=pk)
        item.delete()
        return Response(status=status.HTTP_204_NO_CONTENT)

и я настроил URL своего приложения следующим образом

    router = DefaultRouter()

    urlpatterns = [
        url(r'^(?P<email>[\w.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4})/$', views.DeployedContractsList.as_view()),
        url(r'^(?P<pk>)/$', views.DeployedContractsList.as_view()),
        url(r'^', views.DeployedContractsList.as_view())
   ]

и проект urls.py У меня есть следующие конфигурации

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^deployedcontracts', include('deployedcontracts.urls')),
]

но после выполнения запроса на удаление http://127.0.0.1:8000/deployedcontracts/0xe9114368611e9f20cf46b76aa33319fc0ce0b585/ я получаю следующую ошибку

enter image description here

несмотря на то, что я добавил pk в URL-адресе запроса, т.е. 0xe9114368611e9f20cf46b76aa33319fc0ce0b585, как это видно из моего URL-адреса. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 07 мая 2018

Вы забыли добавить регулярное выражение в url patern:

url(r'^(?P<pk>[\w-]+)/$', views.DeployedContractsList.as_view()),
...