0

ajax呼び出しを使用してファイルをアップロードするにはどうすればよいですか?テンプレートの私のフォーム

<form action="images/" enctype="multipart/form-data" method="POST" class="upload">                                            
    <table>
        {{ form.as_table }}
        <td><input type = "button" onclick="" value="Upload" id = "test"/</td>
    </table>
</form>

私のjQuery関数:

$(document).ready(function(){
    $("#test").click(function(){
        var string = $("form.upload").serialize();
        alert(string);
        $.ajax({
            url :'/test/',
            type:'post',
            data: {datas:string},  
        dataType: "json",           
         success: function(response) {
                    alert(response);
                  }
        });
    });
});

私の見解 :

@csrf_exempt        
def test(request):
    if request.is_ajax():
        form = ImageUploadForm(request.POST)
        if form.is_valid():
            form.save()
        return HttpResponse("Saved !!!!")

ここにファイルアップロードのビューがありますが、ファイルはdjangoビューのフォーム変数に表示されません。ビューにファイルを表示するにはどうすればよいですか?フォームには、アップロード用のファイルフィールドがあります。モデルフォームです。

4

1 に答える 1

4

ここには 2 つの重要な部分が欠けています。

  1. jQuery.serialize() は、ファイル フィールドに対して何もしません。Ajax 経由でファイルを含むフォームを投稿する強力な方法については、jQuery フォーム プラグインを確認してください。
  2. アップロードされたファイルを明示的にフォーム コンストラクターに渡す必要があります。form = ImageUploadForm(data=request.POST, files=request.FILES)
于 2012-12-18T07:58:18.110 に答える