Django从视图创建和输出txt文件

时间:2019-05-23 17:29:38

标签: python django

我有一个场景,用户上传一些数据,Django在熊猫中进行一些处理,并返回一个可能很大的txt文件。我已经做好了这项工作,但不确定这种方法的可扩展性,并想知道是否有更好的方法。

适应了Django文档的“输出到CSV”部分,我具有以下内容:

.unix()

在实践中,我将需要输出大约1000行的文本文件,该文件是通过遍历多个数据帧而构建的,我应该只构建一个非常长的文本字符串(内容),还是有更好的方法?在纯python中,我更习惯于使用以下方式创建txt文件输出:

const endDate = '2019-05-29 17:00:00';

console.log("Moment: ", moment(endDate).unix()); // 1559142000
console.log("Parse: ", Date.parse(new Date(endDate))); // 1559142000000

似乎更直观。

根据评论的要求,进行了更新,以准确显示我在Django中尝试的代码,该代码返回了一个空文本文件:

class MyClass(LoginRequiredMixin,FormView):
  template_name = 'myapp/mytemplate.html'
  form_class = MyForm
  success_url = '/'  # Replace with your URL or reverse().
  def post(self, request, *args, **kwargs):
    if request.method == 'POST':    
      form = MyForm(request.POST, request.FILES)  
      #print("filename",files[0].name)
      if form.is_valid()  : 
        filename = "my-file.txt"
        content = 'any string generated by django'
        response = HttpResponse(content, content_type='text/plain')
        response['Content-Disposition'] = 'attachment; filename={0}'.format(filename)
        return response


      else:
        print("i am invalid")
        return self.form_invalid(form)

1 个答案:

答案 0 :(得分:0)

https://docs.djangoproject.com/en/3.2/howto/outputting-csv/

和CSV一样,只是把扩展名改成.txt

示例:

response = HttpResponse(content_type='text/plain')  
response['Content-Disposition'] = 'attachment; filename="filename.txt"'

writer = csv.writer(response)

writer.writerow(['Hello'])