Перенаправление пользователя на ту же страницу после POST
Я создаю инструмент для организации турниров, но столкнулся с проблемой.
У меня есть представление под названием index (в настоящее время это единственное представление), которое показывает таблицу лидеров турнира, а также таблицу незавершенных матчей и таблицу завершенных матчей. Для каждого из незавершенных матчей я добавил поле ввода для каждого игрока, в которое пользователь может вводить результаты. Каждый матч также имеет кнопку отправки. Я хочу, чтобы при нажатии на кнопку отправки матч был завершен, а результат матча (оценки в полях ввода) был сохранен в базе данных. Затем я хочу, чтобы пользователь снова увидел ту же страницу (с переходом матча из незавершенного в завершенный). Проблема заключается в том, чтобы перенаправить игрока на ту же страницу. Я пробовал искать похожие вопросы и ответы на них и попробовал несколько разных вещей, например
if request.method == "POST":
return render(request, './')
или
if request.method == "POST":
return redirect(request.path)
или
if request.method == "POST":
return index(request)
все они перенаправляют меня на /index.html, который не существует - мои urlpatterns выглядят следующим образом
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index, name='index'),
]
Мне бы очень пригодилась помощь в определении того, что я делаю неправильно. Заранее спасибо
Вы можете использовать redirect()
с атрибутом name, установленным на url
, например:
if request.method == "POST":
return redirect("index") # or -> return redirect("/")
Однако, если вы используете app_name
, вы хотите сказать:
if request.method == "POST":
return redirect("app_name:index")
Я не уверен, что наличие return statement
внутри блока if request.method == "POST":
; переход на ту же страницу имеет смысл в данном случае, поскольку вы хотите, чтобы пользователь оставался на той же странице. Я предполагаю, что у вас уже есть return statement
за пределами блока if request.method == "POST":
. Почему бы не использовать только его для этого вида?