Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 返回多个属于Excel电子表格的HttpResponse对象_Python_Django_Export_Xlsxwriter - Fatal编程技术网

Python 返回多个属于Excel电子表格的HttpResponse对象

Python 返回多个属于Excel电子表格的HttpResponse对象,python,django,export,xlsxwriter,Python,Django,Export,Xlsxwriter,理想的结果是导出数据库中所有用户的电子表格,而不是一次导出所有用户-将用户分成3个组,并将每个组导出为电子表格 我正在使用xlsxwriter和StringIO 到目前为止,代码只返回3个对象中的第一个HttpResponse对象(即第一个用户块)。我尝试使用StreamingHttpResponse,但认为我误用了它/它不适合此任务 问题:我能否在一次回复中返回多个电子表格?如果不是,最好的办法是多次调用此函数,每个用户组调用一次?(在第一次评论后编辑) 多谢 代码如下: def export

理想的结果是导出数据库中所有用户的电子表格,而不是一次导出所有用户-将用户分成3个组,并将每个组导出为电子表格

我正在使用xlsxwriter和StringIO

到目前为止,代码只返回3个对象中的第一个HttpResponse对象(即第一个用户块)。我尝试使用StreamingHttpResponse,但认为我误用了它/它不适合此任务

问题:我能否在一次回复中返回多个电子表格?如果不是,最好的办法是多次调用此函数,每个用户组调用一次?(在第一次评论后编辑)

多谢

代码如下:

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

不能使用单个API调用返回多个HttpResponse对象。但是,作为一种解决方法,您可以:

  • 方法1:如果内容始终是动态的,并且将来不需要文件引用: 对每个返回的
    HttpResponse

  • 方法2:如果内容将是静态的,并且您将来可能需要相同的文件:提出单个请求,将文件上载到
    aws s3
    谷歌云存储
    ,或您的服务器上。返回每个文件的路径和响应,并在客户端下载这些文件


您不能使用单个API调用返回多个HttpResponse对象。但是,作为一种解决方法,您可以:

  • 方法1:如果内容始终是动态的,并且将来不需要文件引用: 对每个返回的
    HttpResponse

  • 方法2:如果内容将是静态的,并且您将来可能需要相同的文件:提出单个请求,将文件上载到
    aws s3
    谷歌云存储
    ,或您的服务器上。返回每个文件的路径和响应,并在客户端下载这些文件


不能返回多个HttpResponse对象,但如果将多个文件合并到一个压缩文件中,则可以在一个HttpResponse中返回多个文件


不能返回多个HttpResponse对象,但如果将多个文件合并到一个压缩文件中,则可以在一个HttpResponse中返回多个文件


您可以从视图中只返回一个响应。如果需要多个响应,还需要从浏览器发出多个请求。您不能这样做。作为解决方法,您可以将文件保存在静态文件夹中,并返回所有文件的路径。收到响应后,客户端可以打开(或下载)所有files@MoinuddinQuadri-听起来很有希望!不熟悉将文件保存到静态文件夹:您能否详细说明一下作为问题的答案?您必须在
django
项目中配置
static
文件设置,并将文件保存到静态文件夹中,然后返回该文件的路径。你可以很容易地在网上找到各种各样的例子来说明如何做到这一点,你可以从你的观点中只返回一个答案。如果需要多个响应,还需要从浏览器发出多个请求。您不能这样做。作为解决方法,您可以将文件保存在静态文件夹中,并返回所有文件的路径。收到响应后,客户端可以打开(或下载)所有files@MoinuddinQuadri-听起来很有希望!不熟悉将文件保存到静态文件夹:您能否详细说明一下作为问题的答案?您必须在
django
项目中配置
static
文件设置,并将文件保存到静态文件夹中,然后返回该文件的路径。你很容易在网上找到关于如何实现这一目标的各种例子