2017-08-13 22 views
0

私はDjangoをかなり使い慣れていて、Djangoテンプレートを使用してファイルを配信したり、フォームからプッシュしたりしていません。DjangoテンプレートからCSVを作成してダウンロードする方法

私の目標は、これです:ユーザからのフォームで収集した情報を使用して

、私のDBを照会し、ユーザーにダウンロードされ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 

それとも

あなたは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) 
をインストール

ジャンゴ - クエリセット-CSVリスク利用をしたいいけない場合
関連する問題