Django 正确<;形式动作="&引用;SessionWizardView的URL
获取Django SessionWizardView将数据提交到我的数据库,我正在尝试隔离该问题 我注意到 除了元素外,表单还必须指定两件事:Django 正确<;形式动作="&引用;SessionWizardView的URL,django,django-forms,django-templates,django-views,Django,Django Forms,Django Templates,Django Views,获取Django SessionWizardView将数据提交到我的数据库,我正在尝试隔离该问题 我注意到 除了元素外,表单还必须指定两件事: 其中:对应于用户输入的数据应返回到的URL 如何:返回数据的HTTP方法 及 发送回Django网站的表单数据由视图处理, 通常与发布表单的视图相同。这使我们能够 重复使用一些相同的逻辑 目前我正在使用,我相信这是正确的 问题是,我的视图被称为class SurveyWizardOne(SessionWizardView):但是如果我试图在表单操作中
- 其中:对应于用户输入的数据应返回到的URL
- 如何:返回数据的HTTP方法
,我相信这是正确的
问题是,我的视图被称为class SurveyWizardOne(SessionWizardView):
但是如果我试图在表单操作中使用它,我会在调查的第一页上单击Next(下一步)时出错
问题:基于以下内容的action=“/surveyone/”
正确吗
谢谢
url.py
url(r'^surveyone/$', SurveyWizardOne.as_view([
SurveyFormIT1,
SurveyFormIT2,
Start,
SurveyFormA,
SurveyFormB,
SurveyFormC,
SurveyFormD,
SurveyFormE,
SurveyFormSpike1,
SurveyFormF1,
SurveyFormF2,
SurveyFormF3,
SurveyFormDV1,
SurveyFormF4,
SurveyFormF5,
SurveyFormF6,
SurveyFormSpike2,
SurveyFormDV2,
SurveyFormF7,
SurveyFormF8,
SurveyFormF9,
SurveyFormDV3,
SurveyFormDV4,
SurveyFormDV5,
SurveyFormG,
SurveyFormH,
SurveyFormI
])),
class SurveyWizardOne(SessionWizardView):
def get_context_data(self, form, **kwargs):
context = super(SurveyWizardOne, self).get_context_data(form, **kwargs)
step = int(self.steps.current)
....
....
return context
def done(self, form_list, **kwargs):
return render(self.request, 'Return_to_AMT.html', {
'form_data': [form.cleaned_data for form in form_list],
})
视图.py
url(r'^surveyone/$', SurveyWizardOne.as_view([
SurveyFormIT1,
SurveyFormIT2,
Start,
SurveyFormA,
SurveyFormB,
SurveyFormC,
SurveyFormD,
SurveyFormE,
SurveyFormSpike1,
SurveyFormF1,
SurveyFormF2,
SurveyFormF3,
SurveyFormDV1,
SurveyFormF4,
SurveyFormF5,
SurveyFormF6,
SurveyFormSpike2,
SurveyFormDV2,
SurveyFormF7,
SurveyFormF8,
SurveyFormF9,
SurveyFormDV3,
SurveyFormDV4,
SurveyFormDV5,
SurveyFormG,
SurveyFormH,
SurveyFormI
])),
class SurveyWizardOne(SessionWizardView):
def get_context_data(self, form, **kwargs):
context = super(SurveyWizardOne, self).get_context_data(form, **kwargs)
step = int(self.steps.current)
....
....
return context
def done(self, form_list, **kwargs):
return render(self.request, 'Return_to_AMT.html', {
'form_data': [form.cleaned_data for form in form_list],
})
向导\u form.html
{% extends "base.html" %}
{% load i18n %}
{% block head %}
{{ wizard.form.media }}
{% endblock %}
{% block content %}
<div class="main_content">
<p>Page: {{ wizard.steps.step1 }} of {{ wizard.steps.count }}</p>
<form action="/surveyone/" method="post">{% csrf_token %}
<table>
{{ wizard.management_form }}
{% if wizard.form.forms %}
{{ wizard.form.management_form }}
{% for form in wizard.form.forms %}
{{ form }}
{% endfor %}
{% else %}
{{ wizard.form }}
{% endif %}
</table>
{%extends“base.html”%}
{%load i18n%}
{%block head%}
{{wizard.form.media}
{%endblock%}
{%block content%}
页面:{{wizard.steps.step1}共{{wizard.steps.count}
{%csrf_令牌%}
{{wizard.management_form}
{%if wizard.form.forms%}
{{wizard.form.management_form}
{wizard.form.forms%中窗体的%s}
{{form}}
{%endfor%}
{%else%}
{{wizard.form}
{%endif%}
由于您的表单提交到相同的url,您只需使用action=“”
。如果愿意,可以使用action=“/surveyone/”
如果不想在模板中硬编码url,则需要:
然后,可以在模板中使用标记:
action="{% url 'survey_one' %}"
感谢您确认我可以简单地使用action=“
我以前使用过这个,但我认为它可能会导致我在另一个问题中强调的问题。关于命名URL模式的技巧也不错