2016-08-11 6 views
0

私の主な仕事は、ユーザにダウンロードボタンを押し、クエリディレクトリから "A.zip"ファイルをダウンロードさせることです。ユーザーがDjangoビューからZIPをダウンロードできるようにする

「実行」ボタンが押されたかどうかを確認する別の条件があるので、私はelifリクエストを持っている理由を考えます。この実行ボタンはスクリプトを実行します。どちらのPOSTアクションも動作し、dir_fileはC:\ Data \ Folderです。

私は、Djangoからファイルをダウンロードする方法に関する多くのチュートリアルとレスポンスを読んでいます。私の単純なコードがファイルをダウンロードしない理由を理解できません。

私には何が欠けていますか?コードはエラーを返しません。誰かが私が間違っていることを説明できる文書を持っていますか?

ファイルの自動ダウンロードが必要ですが、発生しません。

elif request.POST['action'] == 'Download': 
    query = request.POST['q'] 
    dir_file = query + "A.zip" 
    zip_file = open(dir_file, 'rb') 

    response = HttpResponse(zip_file, content_type='application/zip') 
    response['Content-Disposition'] = 'attachment; filename=%s' % 'foo_zip' 

    zip_file.close() 

答えて

0

私は私の答えを見つけました。

これについて多くのドキュメントを読んだ後、私はのURLであるこの機能の最も重要な側面を除外しました。

基本的に、関数download_zipはPOSTによって呼び出され、zipがダウンロードされた場所でスクリプトを実行します。

最後に
def download_zip(request): 
    zip_path = root + "A.zip" 
    zip_file = open(zip_path, 'rb') 
    response = HttpResponse(zip_file, content_type='application/zip') 
    response['Content-Disposition'] = 'attachment; filename=%s' % 'A.zip' 
    response['Content-Length'] = os.path.getsize(zip_path) 
    zip_file.close() 

    return response 

urls.py中:

url(r'^download/$', views.download_zip, name='download_zip'), 

elif request.POST['action'] == 'Download': 
     return(HttpResponseRedirect('/App/download')) 

ビューを作成:ここで

は私がやってしまったものです
関連する問題