Django Redirect не работает внутри представления
Я пытаюсь заставить свой вид перенаправлять на другую страницу после нажатия кнопки, которая вызывает POST-запрос. Я не могу понять, почему перенаправление не работает или почему оно даже не пытается перенаправить.
Вот мое мнение:
def cart1(request):
if request.user.is_authenticated:
#POST
if request.method == "POST":
#JSON Data
data = request.body
new_data = ast.literal_eval(data.decode('utf-8'))
customer = request.user
user_order = Order(user=customer)
user_order.save()
x = 0
while x < len(new_data.keys()):
obj_title = new_data[x]["title"]
obj_price = new_data[x]["price"]
obj_quantity = new_data[x]["quantity"]
obj_extra = new_data[x]["extra"]
total = round(float(obj_price.replace("$", "")))
m = OrderItem(order=user_order, title=obj_title, price=total, quantity=obj_quantity, extra=obj_extra)
m.save()
x += 1
redirect('checkout-page')
return render(request, 'cart.html')
Любая помощь будет оценена по достоинству, спасибо
redirect(…) [Django-doc] производит HttpRedirectResponse, вам нужно вернуть его, так:
return redirect('checkout-page')
redirect(…) таким образом, не останавливает поток кода, чтобы перенаправить ответ HTTP-перенаправления, он конструирует такой ответ, и ваше представление должно затем вернуть этот ответ.
вам нужно убедиться, что имя URL =checkout-page находится в текущем приложении, иначе вам нужно сделать его redirect('app:checkout-page')
Однако я предлагаю использовать from django.http import HttpResponseRedirect