Я пытаюсь использовать систему сообщений Django, чтобы отправить пользователя обратно на предыдущую страницу. У меня есть FBV Удалить клиента, к которому можно получить доступ из разных мест, и после удаления клиента я хочу отправить пользователя обратно туда, где он был. Если я делаю это, это работает хорошо, и я получаю ожидаемое поведение:
@login_required
def delete_customer(request, custpk):
del_cust = Customer.objects.get(pk=custpk)
returnURL = ''
if request.method == "POST":
storage = get_messages(request)
for message in storage:
returnURL = message.message
storage.used = True
del_cust.delete()
return redirect(returnURL)
context = {
'del_cust': del_cust
}
return render(request, 'delete_customer.html', context)
Однако я хочу иметь возможность использовать эту переменную returnURL как в разделе If "POST", так и в переменной context для отправить в оператор рендеринга. Почему, когда я это делаю, это не работает?
@login_required
def delete_customer(request, custpk):
del_cust = Customer.objects.get(pk=custpk)
returnURL = ''
storage = get_messages(request)
for message in storage:
returnURL = message.message
storage.used = True
if request.method == "POST":
del_cust.delete()
return redirect(returnURL)
context = {
'del_cust': del_cust,
'returnURL': returnURL
}
return render(request, 'delete_customer.html', context)
Почему это не работает? Когда происходит перенаправление, он говорит, что перенаправлять нечего. Как я могу установить переменную returnURL в верхней части функции и использовать ее в разделе If "POST" и в переменной контекста?
РЕДАКТИРОВАТЬ: я согласен, назначение переменной в al oop плохой. Рассмотрим пример ниже. Почему переменная del_cust доступна в операторе If ... "POST", а переменная urlList - нет? Первый отпечаток (urlList) показывает мне мой список с одним элементом (текст моего одного сообщения). Второй вывод (urlList) внутри оператора If ... "POST" показывает пустой список. Почему?
@login_required
def delete_customer(request, custpk):
del_cust = Customer.objects.get(pk=custpk)
urlList = []
storage = get_messages(request)
for message in storage:
urlList.append(message.message)
storage.used = True
print(urlList)
if request.method == "POST":
print(urlList)
del_cust.delete()
return redirect('/')
context = {
'del_cust': del_cust
}
return render(request, 'delete_customer.html', context)