Django: отправка формы и перенаправление на новую страницу
Мне нужно обновить и перенаправить на новую страницу CreateOrder.html по пути: "homepage/order/", после нажатия пользователем кнопки отправки формы (т.е. кнопки "Заказать сейчас") на главной странице. какой правильный способ обновления (рендеринга) CreateOrder.html и перенаправления на эту страницу?
#views.py
def CreateOrder(request):
navi_load = request.session['navi_load']
navi_unload = request.session['navi_unload']
dist = request.session['dist']
charge = request.session['charge']
return render(request, 'OnlinePricing/CreateOrder.html', {'pickup_address': navi_load,
'delivery_address': navi_unload,
'distance': dist, 'charge': charge})
#urls.py
urlpatterns = [
path('', views.OnlinePricing, name='OnlinePricing'),
path('order/', views.CreateOrder, name='CreateOrder'),
]
#home page HTML
<form>
...
<button type="submit">Get Price</button> <button type="submit" style="margin-left:10px;">Order Now</button>
</form>
#CreateOrder.html
<html>
<div>
<label>pickup_address:</label>
<span id="pickup_address"> {{ pickup_address }} </span>
</div>
<div>
<label>delivery_address:</label>
<span id="delivery_address"> {{ delivery_address }} </span>
</div>
<div>
<label>dist:</label>
<span id="distance"> {{ distance }} </span>
</div>
<div>
<label>charge:</label>
<span id="charge" style="color: #ff0000;font-size:25px"><b>{{ charge }}</b></span>
</div>
</html>
Последовательность redirect - это то, что вы ищете. Просто закончите последовательность POST этим:
from django.shortcuts import redirect
...
if request.method == "POST":
...
return redirect('CreateOrder', kwargs={**kwargs})