gpt4 book ai didi

python - Django CBV属性错误: Generic detail view must be called with either an object pk or a slug

转载 作者:行者123 更新时间:2023-12-01 05:02:35 25 4
gpt4 key购买 nike

我正在尝试在测试中获取基于类的 View 的输出。

factory = RequestFactory()
request = factory.get(item.get_absolute_url()) # get_absolute_url returns '/my-slug-path/'
request.user = UserFactory(username='test', is_staff=False, is_superuser=False)
item_view = ItemDetail.as_view()
response = item_view(request)

当我运行上述代码时,它在 item_view(request) 上出错。

*** AttributeError: Generic detail view ItemDetail must be called with either an object pk or a slug.

我怎样才能做到这一点? CBV 在正常站点操作中工作正常,但在编写测试时它此时失败。任何帮助将不胜感激

最佳答案

您在这里所做的是直接调用 View ,而不是通过 Django 的 URL 解析器/调度器。因此,您需要传递 View 期望的参数:在这种情况下,如错误消息所示,包括 slug/pk。所以:

response = item_view(request, item.slug)

但是,测试 View 的更好方法是使用内置的测试客户端对象,这意味着您可以摆脱所有该代码并将其替换为:

response = self.client.get(item.get_absolute_url())

关于python - Django CBV属性错误: Generic detail view must be called with either an object pk or a slug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25748530/

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