0

私はこの質問を見ました:

Djangoで複数のファイルをアップロードする

しかし、私はそれに関して問題があるので、それは役に立たなかったようです:

  1. 認証されたユーザーのみが実行できるアップロードを実行する必要があるため、SWFUploadおよびUploadifyを使用してフラッシュセッションを処理したくありません。
  2. newformsは古いバージョンのdjango用で、1.3を使用しています

Djangoを使用して、このHTMLフォーム構造を作成するにはどうすればよいですか?

<form enctype="multipart/form-data" action="." method="post">
 <label for="id_image_1">Image 1</label>
 <input type="file" name="image[]" id="id_image_1" />

 <label for="id_image_2">Image 2</label>
 <input type="file" name="image[]" id="id_image_2" />
</form>

ビューを使用して処理しますか?

4

2 に答える 2

2

ファイルフィールドの数が決まっている場合は、十分な数のファイルフィールドを持つフォームを単純に定義するか、フォームのコンストラクターでプログラムによってファイルフィールドを追加することができます。ファイルのアップロードに関する Django ドキュメントを参照してください。

ある種の動的機能 (gmail の「別のファイルを追加」) が必要な場合は、単一のファイルフィールドを持つフォームを使用してフォームセットを定義できます。最初に単一のフォームを表示し、別のフォームを追加したい場合は、小さな JavaScript を使用して新しいフォームを作成し、フォームセットの管理フォームを更新します。これを行うのに役立つスニペットがいくつか 出回っていますが、微調整が必​​要な場合があります。ファイルのアップロードフォームセットに関する Django ドキュメントを参照してください。

別のオプションとして、カスタム ウィジェットとフィールドを使用することもできますが、私はこれを確認したり試したりしていません。

偶然かもしれませんが、name="image[]" スキームは PHP 固有のものであり、再実装しない限り、他の言語では特別な意味を持ちません。

于 2011-04-05T02:02:49.527 に答える
0

newforms は、現在のフォームが 1.0 より前に呼び出されたものです。さらに、フォームが検証された場合、http://docs.djangoproject.com/en/dev/topics/http/file-uploads/、リストとしてファイルがあります(タプル、おそらく、とにかくシーケンス) request.FILES['image'] で、次のようにします。

if request.method == 'POST':
    form = UploadFileForm(request.POST, request.FILES)
    if form.is_valid():
       for f in request.FILES['image']:
           handle_uploaded_file(f)

handle_uploaded_file を自分で記述する必要があります。URL にその方法が説明されています

于 2011-04-05T01:45:12.890 に答える