python - 类型错误:delete() 缺少 1 个必需的位置参数:'pk' django
问题描述
我在我的 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)
我已经通过以下方式配置了我的应用程序网址
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/
我收到以下错误
尽管我已经在请求 url 中附加了 pk,即 0xe9114368611e9f20cf46b76aa33319fc0ce0b585,因为它可以在我的 url 中看到。任何帮助表示赞赏。
解决方案
您忘记将正则表达式添加到 url 模式:
url(r'^(?P<pk>[\w-]+)/$', views.DeployedContractsList.as_view()),
推荐阅读
- python - 从python中的数组中提取信息
- spring - 我们如何在 Spring MVC 中使用具有父子关系的复选框?
- javascript - 带有数组推送的嵌套 for 循环会产生不需要的结果
- pyspark - 了解 dstream.saveAsTextFiles() 行为
- angular - 通过调用component2中的函数来处理component1.onClick。不是父/子组件。Angular 5 和 Rxjs
- javascript - 多人 html5 游戏中的 Lance.gg 不同步
- angular - Bazel 执行的 java 应用程序引擎进程不会在 docker 中与外部通信
- angular - (加载)和(错误)在img元素angular4上被多次调用
- python-idle - 在 Python IDLE 中换行
- excel - Excel 链接到共享驱动器上的彭博实时数据