#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
. Спасибо. Позвольте мне попробовать.