2017-09-09 7 views
0

私はいくつかの助けが必要です。私はcsv fileに書き込んで、Pythonを使ってダウンロードする必要があります。私は以下のコードを説明しています。データベースコンテンツをcsvファイルに書き込んでPythonを使用してダウンロードする方法

<form method="get" action="{% url 'createfile' %}"> 
{% csrf_token %} 
<label>Type File Name: </label> 
<textarea rows="4" cols="100" name="file"> 
</textarea> 
<br> 
<button type="submit">Download</button> 
</form> 

views.py:

def createfile(request): 
    """ In this function remote file path is included """ 

    if request.GET.get('file') is not None and request.GET.get('file') != '': 
     file = request.GET.get('file') 
     response = urllib.urlopen(file) 
     lines = response.readlines() 
     report = Reactor.objects.all() 
     return HttpResponse(content=lines, content_type="text/html") 
    else: 
     return render(request, 'plant/home.html', {'count': 1}) 

リアクター:

id  name  status 

1  Reactor1  1 

2  Reactor2  0 

ここでは、ユーザがavobeデータベースの内容が書き込まれるファイル名を提供し、このファイルを使用していますcsvファイル最後にこのファイルがダウンロードされます。

+0

だから、何をやりたいのですか? "Reactor"の出力をcsvファイルにエクスポートしますか? – RedEyed

+0

@ VadymStupakov:はい私はそれを正確に必要とします。 – subhra

答えて

0

これを試してみてください:

import csv 

txt = """id  name  status 

1  Reactor1  1 

2  Reactor2  0 
""" 

def write_to_csv(file_name, input_str): 
    with open(file_name, 'w', encoding="utf-8") as csvfile: 
     writer = csv.DictWriter(csvfile, fieldnames=["id", "name", "status"], delimiter=';') 
     writer.writeheader() 

     writer = csv.writer(csvfile) 
     for line in input_str.splitlines(): 
      lines = line.split() 
      if len(lines) != 3: 
       continue 
      _id, name, status = lines 
      if _id == "id": 
       continue 

      writer.writerow([_id, name, status]) 

if __name__ == "__main__": 
    write_to_csv('csv_test.csv', txt) 
関連する問題