Python Django调试工具栏:如何配置文件下载?

Python Django调试工具栏:如何配置文件下载?,python,django,django-debug-toolbar,Python,Django,Django Debug Toolbar,My Django webapp允许用户下载动态生成的文本文件: response = HttpResponse(my_file_contents) response['Content-Disposition'] = 'attachment; filename="my file.txt"' return response 我安装了Django调试工具栏(0.11.0,因为我无法使用1.0.1),但当我单击下载时,工具栏不会显示有关下载文件的信息,可能是因为该文件是单独的页面/请求(或者可能是非

My Django webapp允许用户下载动态生成的文本文件:

response = HttpResponse(my_file_contents)
response['Content-Disposition'] = 'attachment; filename="my file.txt"'
return response
我安装了Django调试工具栏(0.11.0,因为我无法使用1.0.1),但当我单击下载时,工具栏不会显示有关下载文件的信息,可能是因为该文件是单独的页面/请求(或者可能是非HTML文件)。下载的文件也不包含任何调试信息


如何分析此文件下载的性能?

您说得对,这是调试工具栏无法帮助您的情况之一。我建议使用日志文件来计时您的请求时间。例如,如果您正在使用Nginx,那么您可以将其语法用于。例如,下一行为每个请求添加响应时间:

log_format timed_combined '$remote_addr - $remote_user [$time_local]  '
      '"$request" $status $body_bytes_sent '
      '"$http_referer" "$http_user_agent" '
      '$request_time $upstream_response_time $gzip_ratio';

如果您更喜欢Django应用程序解决方案,您可以签出。

如果您专注于分析DB查询,另一种临时解决方案是不返回文件下载响应,而是加载模板(应用程序中的任何有效Django模板都应该可以工作)。DDT仍然记录所有查询,您可以在后续页面上看到它们。这是可行的,因为您通常感兴趣的是为了构建准备下载的数据而进行的查询。获取一些已经在手的数据并返回响应的实际过程通常非常快

假设您有一个表单,可以请求下载。通常,您的视图会返回如下内容:

# (Do something here to collect data)
response = HttpResponse(export_data, content_type=content_type)
response['Content-Disposition'] = 'attachment; filename=somefile.txt'
return response
只需将其注释掉并返回一个常规的渲染模板即可——如果不想显示,则不需要显示数据。如果使用像TemplateView或FormView这样的mixin,这可能只是对上述内容进行注释,然后Django将呈现该模板,就好像没有执行下载操作一样。或者,只需在应用程序中呈现任何Django模板。现在,打开DDT工具栏——这里有所有的查询

您可以使用

它允许您通过附加
?调试工具栏
,强制为任何url呈现模板

这允许您在开发任何视图时访问工具栏及其所有工具,而无需任何代码更改

警告:我不确定目前它的维护程度,最后一次提交是从2020年开始