2017-08-13 28 views
0

我是相当新的Django,并没有做很多与服务文件,并只有拉和从表单使用Django模板推送。如何创建和从Django模板下载CSV

我的目标是:

使用来自用户的形式收集到的信息,请查询我的数据库,并创建一个CSV,将下载到用户。

这是可能的基于模板的页面?

回答

1

使用默认的Django的csv.writer

# In this example csv_request is the request model to save how many CSV requests came via your form 
# DataForCSVModel is the Model you want to download as CSV 

import csv 
from django.http import HttpResponse 

def some_view(request): 
    # your business logic or whatever goes here 
    if form.is_valid(): 
     csv_request = form.save(commit=False) 
     csv_request.requested_by = request.user 
     csv_request.requested_date= timezone.now() 
     csv_request.save() 

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

    writer = csv.writer(response) 
    [writer.writerow() for a in DataForCSVModel.objects.filter(<use csv_request object's data to filter>).values_list('id', 'name', 'place')] 
    # Or if you want to write something else write like this 
    # writer.writerow(['hello', 'world', 'Foo', 'Bar', 'Baz']) 

    return response 

或者

如果你不想冒这个险使用Django的查询集-CSV

安装https://github.com/azavea/django-queryset-csv

from djqscsv import render_to_csv_response 

def csv_view(request): 
    qs = Foo.objects.filter(bar=True).values('id', 'bar') 
    return render_to_csv_response(qs)