要提示浏览器保存cs吗

2024-10-02 02:38:59 发布

您现在位置:Python中文网/ 问答频道 /正文

想要提示浏览器使用金字塔。反应。反应搜索线索,找到了a linkDjango的答案,但我不能将其与Pyramid wsgi一起使用我的代码如下所示:

from pyramid.response import Response
def get_list_names_emails(request):
    session, env = request.db, request.client_env
    response = Response(content_type='text/csv')
    output = StringIO()
    writer = csv.writer(output)
    writer.writerow(['SomeName', 'SomeEmail', 'CompanyName])
    csv_output = output.getvalue()
    return csv_output

Tags: csv答案代码fromenvpyramidwsgioutput
3条回答

尝试添加内容处置:

response['Content-Disposition'] = 'attachment; filename="report.csv"'

最好也设置内容类型

response['Content-type'] = 'text/csv'
response['Content-Disposition'] = 'attachment; filename="report.csv"'

作为一种更简洁的方法,您可以注册一个渲染器。在

在配置设置中,添加:

    config.add_renderer(name='csv',
                        factory='mypackage.renderers.CSVRenderer')

然后在mypackage/renderers.py中:

^{pr2}$

之后,可以使用渲染器装饰视图:

@view_config(..., renderer='csv')
def myview(self):
    header = ['name', 'surname', 'address']

    rows = [
            (
                row['name'],
                row['surname'],
                row['address'],
            )
        for row in query_rows(.....)
        ]

    return {
            'header': header,
            'rows': rows
            }

这种方法的优点是可以更好地测试视图代码(只需检查字典值,无需解析任何内容),还可以向同一视图添加XLS或任何呈现器:

@view_config(..., renderer='xls')
@view_config(..., renderer='csv')
def myview(self):
    ...

相关问题 更多 >

    热门问题