Python Django在表单提交后重定向到具有正确URL的索引视图

Python Django在表单提交后重定向到具有正确URL的索引视图,python,django,Python,Django,我正在学习Django,并试图创建一个表单,我可以将参与者的信息提交到数据库中 我有一个索引视图,其中列出了所有参与者: 单击索引上的按钮将转到表单提交: 提交表单后,页面返回到索引视图,但URL不正确,它在 如果我立即刷新浏览器,它将向数据库中添加另一条记录 add_participant.html <!DOCTYPE html> <html> <head> <title>This is the title</t

我正在学习Django,并试图创建一个表单,我可以将参与者的信息提交到数据库中

我有一个索引视图,其中列出了所有参与者:

单击索引上的按钮将转到表单提交:

提交表单后,页面返回到索引视图,但URL不正确,它在

如果我立即刷新浏览器,它将向数据库中添加另一条记录

add_participant.html

<!DOCTYPE html>
<html>
    <head>
        <title>This is the title</title>
    </head>

    <body>
        <h1>Add a Participant</h1>

        <form id="participant_form" method="post" action="/participants/add_participant/">

            {% csrf_token %}
            {{ form.as_p }}

            <input type="submit" name="submit" value="Create Participant" />
        </form>
    </body>

</html>
url.py

from django.conf.urls import url

from . import views
from .models import Participant

app_name = 'participants'

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'add_participant/$', views.add_participant, name='add_participant'),
]
我试着换了开关

return index(request)
致:


它解决了问题……但我怀疑这是一种“正确”的方式。解决此问题的正确方法是什么?

您可以只传递重定向响应的路径:

return HttpResponseRedirect("/participants/")
这样,如果您更改域,重定向将起作用

另一种解决方案是使用
反向

from django.core.urlresolvers import reverse
# ...
return HttpResponseRedirect(reverse(index))

您可以只传递重定向响应的路径:

return HttpResponseRedirect("/participants/")
这样,如果您更改域,重定向将起作用

另一种解决方案是使用
反向

from django.core.urlresolvers import reverse
# ...
return HttpResponseRedirect(reverse(index))