我是Django的初学者。因此,如果我的问题是假的,我谨此表示诚挚的歉意。话虽这么说,但到目前为止,我一直在尝试在互联网上寻找答案,但到目前为止没有成功。
简而言之,我有一个由单个 MultipleChoiceField 组成的表单。
当用户第一次使用此表单在网页上连接时,他可以选中适当的框,然后单击“提交”按钮。到目前为止,我已经做到了。
我遇到的问题是如何将用户重定向到另一种表单(总共有10种表单,直到用户到达“完整”网页为止)。
使用 redirect ,我知道如何将用户重定向到静态网页,但是我不知道如何将用户重定向到动态网页(即基于我视图中的变量值)
以下是我为帮助您更好地了解要达到的目的而编写的脚本:
[views.py]
def my_form(request, id):
form = MyForm(request.POST or None, form_id=id)
if form.is_valid():
# DO SOME CLEAN-UP...
form.id += 1
id += 1
return render(request, 'my_form.html', {'form': form, 'id': id})
[urls.py]
urlpatterns = [
...
] +
[url('my_form', views.my_form, {'id': 1}, name='my_form'))]
您可以想象,我的目标是从ID 1开始,然后每当用户单击Submit按钮时,他就会被重定向到ID + 1表单,直到编号10。
使用上面的代码,我总是被重定向到id = 1的页面。
在请求使用中肯定有些我不了解的东西,但是我无法弄清楚是什么。而且我在本委员会和其他委员会上提出的许多问题都没有帮助。
我很高兴听到那些比我更多的Django经验的人出错了。
非常感谢您。 苏菲:)
[编辑2018年6月10日]
代码现在如下所示:
[my_form.html]
<form action="{% url 'my_form' %}" method="post">
{% csrf_token %}
<table border="1">
{{ form.as_p }}
</table>
<input type="submit" value="Submit" class="btn btn-primary"/>
</form>
[urls.py]
urlpatterns = [
...
] +
[path('question/<int:id>/', views.my_form, name="my_form")]
答案 0 :(得分:0)
也许HttpResponseRedirect帮助您。
return HttpResponseRedirect(reverse('my_form', kwargs={'id':id})