多くの同じ質問を見ましたが、私の問題は解決していません ボタンを使用して私のビューで生成されたファイルをダウンロードしようとしています。xmlhttprequestを使用してボタンでdjangoのファイルをダウンロード
class dumpView(View):
template_name = 'download.html'
def get(self, request):
file = open("/home/test.pdf", "rwbt")
response = HttpResponse(file.read(), content_type="application/pdf")
response['Content-Disposition'] = 'attachement; filename=%s' % file
return render(request, 'download.html')
マイURL:
url(r'^dump/', dumpView.as_view()),
マイテンプレート:
{% extends 'base.html' %}
{% load staticfiles %}
{% block content %}
<div class="container">
<div class="row">
<div class="jumbotron">
<div class="row">
<center>
<a href="javascript:void(0)" class="btn btn-primary btn-lg dump">Download</a>
</center>
</div>
</div>
</div>
</div>
{% endblock %}
{% block javascript %}
<script src="{% static 'js/home.js' %}"></script>
{% endblock %}
私のDjangoのビュー 問題:ダウンロードボタン
私の見解をクリックしながら、私は空のファイルを取得しますレスポンスをレンダリングしています。 UIのクラスダンプを持つボタンにクリックハンドラを追加して、 "/ dump" URLへのXHRリクエストを作成し、レスポンスをBLOBとして受け取り、カスタムの名前と日付でファイルをダウンロードしました。
マイJS:あなたのビューで
$(".dump").on("click", function() {
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
var a, today;
if (xhttp.readyState === 4 && xhttp.status === 200) {
a = document.createElement('a');
a.href = window.URL.createObjectURL(xhttp.response);
today = new Date();
a.download = "file_" + today.toDateString().split(" ").join("_") + ".pdf";
a.style.display = 'none';
document.body.appendChild(a);
return a.click();
}
};
xhttp.open("GET", "/dump", true);
xhttp.setRequestHeader("Content-Type", "application/json");
xhttp.responseType = 'blob';
xhttp.send();
});
「レスポンス」varをどのように表示していますか? –
私はテンプレートを使うことができるように私は応答を返しません。私はちょうど "返信応答"私は私のテンプレートので、テンプレートを持たないで直接ファイルをダウンロードすることができます。 –