就像问题所说,当我打印时,它首先显示列表/字符串然后显示"无"最后就像这样:
["a","b","c"]
"test"
None
None
脚本
$(document).ready(function() {
$("#export").click(function () {
var test = "test";
var array1 = ['a','b','c'];
$.ajax({
url: '/export/csv',
data: {'array1': JSON.stringify(array1), 'test': JSON.stringify(test)},
dataType: 'json',
type: 'POST',
success: function (data) {
}
});
});
});
views.py
@csrf_exempt
def export_csv(request):
print(request.method)
test1 = request.POST.get('test')
array1 = request.POST.get('array1')
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="product-inventory.csv"'
print(array1)
print(test1)
writer = csv.writer(response)
writer.writerow(['Test1')
for t in array1:
writer.writerow([t])
return response
urls.py
url(r'^export/csv$', product_views.export_csv, name='export_csv')
我知道我在 views.py 中遗漏了一些内容。如果你能指出我正确的方向,那就太好了。
提前致谢!
答案 0 :(得分:2)
从我的评论中删除:
当打印的值是POST请求时,可能是在同一URL的GET请求中打印无值时。
查看print(request.method)
的输出,确认URL被访问两次。一个使用POST
方法,另一个采用GET
方法。
None
方法请求期间会打印 GET
个值,因为此时request.POST
不包含您要查找的键。
如果您只想提供POST
方法,则可以demo is here
from django.views.decorators.http import require_http_methods
@csrf_exempt
@require_http_methods(["POST"])
def export_csv(request):
.... # your implementation
但是,您还应该首先尝试找出GET
方法的来源。