我正在构建一个比赛组织工具,但是我遇到了一个问题。
我有一个名为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
。为什么不把它单独用于这个视图呢?