0

私はdjangoフォームを持っていますが、私のHTMLでは、djangoビューで request.POST.get('extra_field_name') を使用してアクセスできる追加の入力フィールド(htmlページに直接追加)を1つ追加しました。

form.is_valid() が false の場合、HTML にデータが表示された HTML としてフォームを取得できますが、余分に追加されたフィールド (html ページに直接追加された) の値は空です。

検証フィアルの後に、この新しく追加された追加の html フィールドの境界付きフォーム データを取得するにはどうすればよいですか。

あなたの提案を教えてください。

4

3 に答える 3

1

意見:

html_added_field = ''
error_added_field = None
if request.method == 'POST':
    html_added_field = request.POST.get('extra_field_name')\
    if form.is_valid():
        pass
    else:
        error_added_field = _('Error')

context = {'html_added_field':html_added_field,'error_added_field':error_added_field}

HTML:

<input type="text" value="{{ html_added_field }}" />{% if error_added_field %}<div class="error">{{ error_added_field }}</div>{% endif %}
于 2012-11-26T09:19:59.370 に答える
0

Bennett によるこの記事が役立つかもしれません。

http://www.b-list.org/weblog/2008/nov/09/dynamic-forms/

__init__簡単に言えば、新しい「extra_field_name」を追加して、フォームのメソッドをオーバーライドする必要があります。フィールドは self.fields リストに含まれているため、次のようにします。

self.fields['extra_field_name'] = forms.CharField(put_here_definitions_for_your_field)

トリックを行う必要があります。

于 2012-11-26T08:58:41.560 に答える
0

正直なところ、ベースのdjangoフォームが余分なフィールドを処理するのが最善の方法です。html で余分なフィールドを使用しない。ただし、xbello が述べているように、できない/したくない場合は、http: //www.b-list.org/weblog/2008/nov/09/dynamic-forms/に動的フィールドを処理するためのさまざまなトリックがあります。

フォーム ファクトリ メソッドを使用する方がより堅牢であることがわかりました。より多くの将来の変更に備えて、動的なフォームを生成する関数。それでも、最善のアプローチを決定する必要があります:-)

于 2012-11-26T17:35:03.447 に答える