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 -我的url模式看起来像这样

urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index, name='index'),
]
我真的需要一些帮助来确定我在这里做错了什么。提前感谢

您可以使用redirect()并在url上设置name属性,如:

if request.method == "POST":
return redirect("index") # or -> return redirect("/")

然而,如果你使用的是app_name,你会想说:

if request.method == "POST":
return redirect("app_name:index")

我不确定是否在if request.method == "POST":块内有return statement;在这种情况下,访问相同的页面非常有意义,因为您希望用户停留在相同的页面上。我假设在if request.method == "POST":块之外已经有了return statement。为什么不把它单独用于这个视图呢?

最新更新