gpt4 book ai didi

python - 在 django 中导出 CSV 文件时出现 405

转载 作者:行者123 更新时间:2023-12-01 02:29:39 27 4
gpt4 key购买 nike

我正在尝试将一些数据导出到可下载的 csv 文件。当我点击网站上的“导出”按钮时,一切正常,直到我收到 405 响应。 post 方法按预期工作,在 response 中我看到了所有预期的数据。下面的过滤过程也按预期工作。

这是 View 类:

class ExportInvoicesToCsvView(View, IsSuperuserMixin):
http_method_names = ['post', 'get']

def post(self, request, *args, **kwargs):
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = (
'attachment; filename=raport.csv'
)

writer = csv.writer(response, delimiter=';')

filters = json.loads(self.request.body.decode('utf8'))
data = Data.objects.filter(filters)

writer.writerow([
'data.a', 'data.b', 'data.c', 'data.d', 'data.e'
])


return response

url配置如下:

url(
r'^invoices-csv/$',
ExportInvoicesToCsvView.as_view(),
name='invoices-csv'
),

和 html 模板:

<a  href="{% url 'accountant:bills:invoices-csv' %}" type="button" class="btn btn-sm btn-default"
ng-click="getSelected()">
<i class="fa fa-files-o fa-2x pull-left"></i>
&nbsp;{% trans 'Exportuj do csv' %}
</a>

编辑这是控制台日志。

Method Not Allowed (GET): /accountant/bills/invoices-csv/
[27/Oct/2017 16:41:12] "GET /accountant/bills/invoices-csv/ HTTP/1.1" 405 0
[27/Oct/2017 16:41:15] "POST /accountant/bills/invoices-csv/ HTTP/1.1" 200 0

据我所知,所使用的方法存在某种问题。尽管如此,我还是能够进入 post 方法并获取我想要的数据。

最佳答案

您不需要http_method_names。一般来说,如果 View 类中存在相应的方法,Django View 只会处理 HTTP 动词的请求。因此,由于您的 View 有一个 post 方法,因此足以告诉 Django 该 View 处理 POST 请求。

405 响应意味着不允许方法

您的模板似乎没有发出 POST 请求。如果没有看到 getSelected() 函数,我无法确定,但我猜你实际上并没有进行 POST;您正在执行 GET,并且由于您的 View 未实现 get() 方法,因此您会看到 405 响应。

尝试以下操作:

  • 删除http_method_names
  • 确保您确实从模板发出 POST 请求(使用浏览器的开发人员工具检查网络请求)。

关于python - 在 django 中导出 CSV 文件时出现 405,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46977300/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com