gpt4 book ai didi

python - Django:在 get_queryset 中返回 HttpResponseRedirect

转载 作者:太空宇宙 更新时间:2023-11-03 14:44:26 24 4
gpt4 key购买 nike

我正在解决搜索表单中的查询。当查询只产生一个对象时,我想将用户直接重定向到该对象的详细信息页面。如果没有,他们应该登陆结果页面。我想我会这样做:

class ResultsView(generic.ListView):
template_name = "chars/results.html"
context_object_name = "chars"
slug_field = 'name'

def get_queryset(self):
char = self.kwargs.pop('slug', '')
object_list = get_list_or_404(Char, name=char)
if len(object_list) > 1:
return object_list

return HttpResponseRedirect(reverse('chars:details', args=(char,)))

不幸的是,这不起作用并为我的模板生成一个空字节串 (b'')。有什么想法吗?

最佳答案

那不是你能在那里做的事情。 get_queryset,顾名思义,需要返回一个queryset。您需要在返回响应的地方执行此操作。一种可能性是 get(),但这样做意味着您必须复制许多内置功能。<​​/p>

一个替代方案是 render_to_response - 我有点困惑,因为这样做会与该函数的名称冲突,但这是一个非常好的地方。

def render_to_response(self, context):
if len(self.object_list) == 1:
return redirect('chars:details', char)
return super().render_to_response(context)

关于python - Django:在 get_queryset 中返回 HttpResponseRedirect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50954741/

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