gpt4 book ai didi

python - 使用名为 "pk"的 URL 关键字参数调用预期 View

转载 作者:太空狗 更新时间:2023-10-29 16:53:02 25 4
gpt4 key购买 nike

我正在紧跟 testing documentation 为 Django Rest Framework View 编写测试。

这是我的简单测试:

def test_patient_detail_api_opens(self):
factory = APIRequestFactory()
view =PatientDetailApi.as_view()
request = factory.get(reverse('api_pacjent', kwargs={'pk' :1}))
force_authenticate(request, user=self.user)
response = view(request)
self.assertEqual(response.status_code, 200)

此测试失败并显示以下消息:

AssertionError: Expected view PatientDetailApi to be called with a URL keyword argument named "pk". Fix your URL conf, or set the `.lookup_field` attribute on the view correctly.

我不明白为什么会这样以及如何解决这个问题。

  • pk kwargs 在 URL 中,
  • 根据文档,如果它默认为 pk,则无需显式添加 lookup-field 值,
  • View 正确打开,但此测试失败...

有人可以解释为什么会出现这个错误吗?

相关代码如下:

“主要”url.py:

urlpatterns = [
url(r'^pacjent/', include('pacjent.urls')),
]

pacjent.urls 看起来像这样:

url(r'^api/szczegoly/(?P<pk>\d+)/$', PatientDetailApi.as_view(), name="api_pacjent"),

PatientDetailApi 是这样的:

class PatientDetailApi(generics.RetrieveUpdateAPIView):
model = Patient
serializer_class = PatientDetailsSerializer
queryset = Patient.objects.all()

authentication_classes = (SessionAuthentication, BasicAuthentication)
permission_classes = (IsAuthenticated,)

最佳答案

View 函数通过请求和来自 URL 的参数被调用。所以通过它们:

response = view(request, pk=1)

关于python - 使用名为 "pk"的 URL 关键字参数调用预期 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41803765/

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