首页 > 解决方案 > 姜戈。如果布尔值 true = 重定向

问题描述

我为目录中的对象设置了重定向。如果复选框中有标记,则表示重定向到该类别。但现在我已将所有对象重定向到一个类别。我究竟做错了什么?

在我的models.py

is_redirect = models.BooleanField('Redirect', default=False)

在我看来.py

def kv(request, kv_id):
    kv = get_object_or_404(Objects, pk=kv_id)
    response = redirect('/category/')
    response.status_code = 301
    context = {
        'kv': kv
    }
    if Objects.objects.all().filter(is_redirect=True):
        return response
    else:
        return render(request, 'listings/product-templates/listing-kv.html', context)

标签: django

解决方案


如果至少存在一个重定向,则您在此处执行重定向Objects。您应该处理kv零件本身:

def kv(request, kv_id):
    kv_obj = get_object_or_404(Objects, pk=kv_id)
    if kv_obj.is_redirect:
        return redirect('/category/', permanent=True)
    else:
        context = {
            'kv': kv_obj
        }
        return render(request, 'listings/product-templates/listing-kv.html', context)

请注意,您可以使用permanent=True,这可能更具自我解释性和声明性。


推荐阅读