希望する結果は、データベース内のすべてのユーザーのスプレッドシートをエクスポートして一度にエクスポートするのではなく、ユーザーを3つのグループに分割し、スプレッドシート。Excelスプレッドシートである複数のHttpResponseオブジェクトを返す
私は、コードは(ユーザーの最初のチャンク別名)3のうちの最初のHttpResponseオブジェクトを返すこれまでxlsxwriterとStringIOを
を使用しています。私はStreamingHttpResponseを使ってみましたが、間違っていると信じています/この作業には適切ではありませんでした。
質問/ s:1つの応答で複数のスプレッドシートを返すことはできますか?そうでなければ、この関数を複数の時間、各ユーザーグループに対して一度呼び出すのが最善の方法でしょうか? (最初のコメントの後編集された)
ありがとう!以下
コード:
def export_users(request):
# all users
users = User.objects.all()
# breaks up all users into 3 groups
user_groups = [users[x:x+2] for x in xrange(0, len(users), 2)]
# FUNCTIONALITY NOTES --> idea is to split number of users for exporting into groups of 3 then export each group. right now it stops after the first group
# list var for storing all responses
full_response = []
for group in user_groups:
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename=UserReport.xlsx'
# user group
print "group! ---> %s"%(group)
# creates data variable to write to response
xlsx_data = WriteToExcel(group)
response.write(xlsx_data)
# appending each response to an array
full_response.append(response)
print len(full_response)
# all response objects
print full_response
# returning one here
return response
# non-functioning attempt to return all responses
# for response in full_response:
# print response
# return response
ビューから1つの応答を返すことができます。複数の応答が必要な場合は、ブラウザから複数の要求も行う必要があります。 – knbk
それはできません。あなたの周りの仕事として、静的フォルダにファイルを保存し、すべてのファイルのパスを返すことができます。応答を受け取ると、クライアントはすべてのファイルを開く(またはダウンロードする)可能性があります –
@MoinuddinQuadri - 有望ですね!静的フォルダにファイルを保存することに慣れていない場合:質問の答えとして可能性がありますか? – Dan