2
私はjQuery初心者です。私は、成功せずにファイルのダウンロードダイアログウィンドウを設定しようとしています。ダイアログウィンドウがロードされている場合、ユーザーは動的に生成されたファイルをダウンロードするオプションが必要です。私はダイアログウィンドウを設定できません。DjangoとjQueryを使用してファイルダウンロードダイアログを設定するには?
デバッグでは、有効なhttp応答が生成されていることがわかります。生成されたコンテンツ配置データは以下の通りである:
attachment; filename=foo.csv
使用事例:
私のアプリケーションは、Djangoのテンプレート上のデータベースからフェッチされたデータを表示するために使用されるDjangoのWebアプリケーションです。私は
コード
のJavascript/HTML形式
/**
* Creates a file to be downloaded upon clicking a button.
*/
$('button[id*="ExportToCsv"]').click(function() {
var report_type = $(this).attr('id').split('ExportToCsv')[0];
// var report_date = '{{ report_date }}'.split('-');
$.ajax({
url: '/reports/' + report_type + '/export_to_csv/',
type: 'POST',
mimeType: 'text/csv',
data: {'report_date': '{{ report_date }}'},
success: function(data) {
return data;
}
});
});
「CSVへのエクスポート」を必要なときに、ユーザーがテキストとボタンをクリックすると、CSV形式で表示されるデータをダウンロードする機能を提供したいです
HTML:
<button id = "ExportToCsv">Export To Csv</button>
ジャンゴ:
class CsvOutputResponse(object):
"""Handles a csv file attachment object.
Attributes:
filename: String name of the csv file.
response: HttpResponse object.
writer: Csv writer object.
"""
def __init__(self, filename):
"""Initalizes the CsvOutputResponse class.
Args:
filename: String name of the csv file.
"""
self.filename = filename
self.response = self._InitializeResponse()
self.writer = csv.writer(self.response)
def _InitializeResponse(self):
"""Initialize a csv HttpResponse object.
Returns:
HttpResponse object.
"""
response = django_dep.HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = (
'attachment; filename=%s.csv' % self.filename)
return response
def WriteRow(self, content):
"""Write a single row to the csv file.
Args:
content: List of strings of csv field values.
"""
self.writer.writerow(content)
def WriteRows(self, content):
"""Write multiple row to the csv file.
Args:
content: List of lists of strings of csv field values.
"""
self.writer.writerows(content)
def GetCsvResponse(self):
"""Get the csv HttpResponse object.
Returns:
content: HttpResponse object.
"""
return self.response
urls.py
(r'^reports/(?P<report_type>\w+)/export_to_csv/$',
'myproject.myapp.views.ExportTab')
views.py
def ExportTab(request, report_type):
"""Generates a file to be exported and made available for download.
Args:
request: HttpRequest object.
report_type: String type of report to be generated.
Returns:
HttpResponse object.
"""
report_date = request.POST['report_date']
db = database.Database()
if report_type == 'Trailing':
reports = containers.GetTrailingReports()
elif report_type == 'Ytd':
reports = containers.GetYtdReports()
return CsvOutputResponse('foo.txt').writeRows(reports).GetCsvResponse()
申し訳ありませんが分かりません。あなたはさらに精緻化できますか? – Kartik
フォームを使用してください。 –
それは私のために働いた。おかげさまでイグナシオ... – Kartik