Django: страница перенаправляется неправильно

#python #django #django-views

#python #django #django-просмотры

Вопрос:

Я хочу проверить в базе данных, заполнил ли пользователь Payment_receipt форму модели при регистрации, при следующем входе пользователя в систему. Если пользователь сначала не заполнил форму, он будет перенаправлен на страницу с именем plan_select . Я попробовал это представление. Но это выдает мне ошибку: «Страница перенаправляется неправильно«.

 def homeview(request):
    if request.user.is_authenticated:
        if Payment_receipt.objects.filter(user = request.user).exists():
            return redirect('home')
        else:
            return redirect('plan_select')
    else:
        return render(request, 'services/home.html')
  

Что могло пойти не так?

Я хочу выполнить ту же проверку с другими моделями в этом представлении при условии if request.user.is_authenticated: . Как мне правильно перенаправить на основе условий?

Ответ №1:

Вы не показали свои шаблоны URL, но это выглядит так, как будто return redirect('home') перенаправляет на тот же вид, создавая цикл перенаправления.

Возможно, вы хотите отобразить шаблон там вместо этого:

 def homeview(request):
    if request.user.is_authenticated:
        if Payment_receipt.objects.filter(user = request.user).exists():
            return render(request, 'services/home.html')
        else:
            return redirect('plan_select')
    else:
        return render(request, 'services/home.html')
  

Вы можете немного упростить это, чтобы избежать дублирования return render() строки:

 def homeview(request):
    if request.user.is_authenticated:
        if not Payment_receipt.objects.filter(user = request.user).exists():
            return redirect('plan_select')
    return render(request, 'services/home.html')
  

Комментарии:

1. Да, return redirect('home') перенаправляется на тот же вид homeview . Спасибо. Позвольте мне попробовать.