1

ユーザーが [プレビュー] をクリックした後、再度表示される前に、フォームから収集されたデータを変更したいと考えています。

class StoryForm(forms.Form):
    title = forms.CharField()
    story = forms.CharField(widget=forms.Textarea)

class StoryFormPreview(FormPreview):

    def done(self, request, cleaned_data):
        # Do something with the cleaned_data, then redirect
        # to a "success" page.
        return HttpResponseRedirect('/form/success')

プレビューが表示される前に、ユーザーがストーリー フィールドに入力した内容に追加し、「Brought to you by so and so」を追加します。どうすればそれについて行くでしょうか?process_preview および preview_post メソッドをいろいろ試しましたが、何も機能しませんでした。

4

1 に答える 1

0

私が理解しているように、あなたはそれを変更することができます

def process_preview(self, request, form, context):
    """
    Given a validated form, performs any extra processing before displaying
    the preview page, and saves any extra data in context.
    """
    pass

更新:

私はフォームクリーンな方法で唯一の解決策を見つけました:

class StoryForm(forms.Form):
    ...
    def clean_story(self):
        self.cleaned_data['story'] = ...
        return self.cleaned_data['story']


class StoryFormPreview(FormPreview):

    def process_preview(self, request, form, context):
        preview_data = {}
        for key, value in form.cleaned_data.iteritems():
            preview_data[key] = value

        context['preview_data'] = preview_data

formtools/preview.html

{% for label, data in preview_data.iteritems %}
<tr>
<th>{{ label }}:</th>
<td>{{ data }}</td>
</tr>
{% endfor %}
于 2012-12-20T10:26:40.127 に答える