0

以下のような初期フォームがあります

フォーム.py

class LoginForm(forms.Form):
  activity_no = forms.CharField()
  username = forms.CharField()

ビュー.py

def test(request):
if request.method == 'POST' :
    form = LoginForm(request.POST)
    if form.is_valid() :
        act_no = form.cleaned_data['activity_no']
        username = form.cleaned_data['username']
        form_data = {}
        form_data['activity_no'] = act_no
        form_data['username'] = username

        return render_to_response("test1.html", { 'form_data' : form_data}, context_instance=RequestContext(request))
else:
     form = LoginForm()

return render_to_response("test.html", {'form': form }, context_instance=RequestContext(request))

test.html

{% extends "admin/base.html" %}

{% block content %}

<form action="/todo/test/" method="post">{% csrf_token %}
    {{ form.as_p }}
<input type="submit" value="Submit" />
</form>

{% endblock %}

test1.html

 {% extends "admin/base.html" %}

 {% block content %}

 <form action="/todo/login/" method="post">{% csrf_token %}
     {% for name, data in form_data.items %}
       <input type="hidden" name={{name}} value={{data}}>
     {% endfor %}

     <input type="submit" value="Yes"/>
 </form>

 {% endblock %}

このフォームに入力し、ファイルの内容をいくつか表示して、上記のフォーム データをフォーム ウィザードに渡しますが、テンプレートのポスト メソッドを介してフォーム ウィザードにデータを渡すと、「ManagementForm Data missing」エラーが発生しますが、データはGETメソッドを介して渡され、エラーは発生しませんが、定義されているように、データはGETメソッドのURLに表示されます(私の場合、開示したくないユーザー名が含まれています)

マイ フォーム ウィザード

class LoginWizard(SessionWizardView):

def __name__(self):
    """When using decorators, Django tries to get the name of the
       function and since we're a class, we'll fail. So add this method to
       compensate."""
    return 'LoginWizard'

template_name = "wizard_form.html"
def done(self, form_list, **kwargs) :
    form_data = process_form_data(form_list)

私の質問は、フォーム ウィザードで投稿データをどのように処理するかということです。何か不足している場合や、他の情報が必要な場合はお知らせください。

4

1 に答える 1

0

{{ wizard.management_form }}参照djangoウィザードテンプレートで説明されているように、テンプレートに追加する必要があります。

お気に入り:

{% extends "admin/base.html" %}

{% block content %}

<form action="/todo/test/" method="post">{% csrf_token %}
    {{ wizard.management_form }}
    {{ form.as_p }}
<input type="submit" value="Submit" />
</form>

{% endblock %}

ウィザードのすべてのテンプレートにそれを追加します。

于 2013-09-24T04:19:53.100 に答える