我現在有一個Django應用程序,我可以搜索查詢我的數據庫,從查詢填充一個HTML表格填入HTML表格。下載從Django應用程序文本/ CSV文件,從數據庫查詢
我app_home.html看起來是這樣的:
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
<title>RESULTS APP</title>
</head>
<form method="get" action="results/">
<div class="SearchBar"><input type="text" name="lab_number"></div>
<input class='input_button' type='submit'>
</form>
<body></body>
</html>
這是我的views.py:
def from_samrun(request):
if request.GET:
lab_query = request.GET['lab_number']
var_list = VarSamRun.objects.filter(sample=lab_query)
if var_list:
return render(request, 'results/varlist.html', {'var_list': var_list})
else:
return render(request, 'results/varlist.html', {'query': [sam_query]})
else:
return render(request, 'results/varlist.html' {'error': 'Error'})
它帶我到我的varlist.html模板:
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head><title>Results page</title></head>
<body>
<div>
{% if var_list %}
{% for v in var_list %}
<tr>
<td class='varsrow' width='100'>{{v.sample}}</td>
<td class='varsrow' width='100'>{{v.gene}}</td>
<td class='varsrow' width='200'>{{v.variant}}</td>
<td class='varsrow' width='150'>{{v.cds}}</td>
<td class='varsrow' width='150'>{{v.protein}}</td>
<td class='varsrow' width='200'>{{v.consequence}}</td>
<td class='varsrow' width='200'>{{v.run}}</td>
<td class='varsrow' width='300'>{{v.annotation}}</td>
</tr>
{% endfor %}
{% elif query %}
<h5>Search using: "
{% for q in query %}
{{q}}
{% endfor %}
" did not return any results</h5>
{% else %}
<h5>{{annotation}}</h5>
{% endif %}
</table>
</div>
</body>
</html>
我的網址是:
urlpatterns = [
url(r'^results/$', views.results_app, name='results_app'),
url(r'results/varlist/$', views.from_samrun, name='from_samrun'),
我想有我varlist.html頁面上的下載按鈕,以便顯示錶時,用戶可以選擇下載 - 導出爲CSV文件。我知道如何將數據寫入到CSV和使用另一種看法下載:
def download_view(request):
response = HttpResponse('')
response['Content-Disposition'] = 'attachment; filename=file.csv'
writer = csv.writer(response, dialect=csv.excel)
writer.writerow(some_random_data_list)
return response
,並添加一個表單按鈕下載到我的varlist.html頁:
<form action ='download' method='POST'>
{% csrf_token %}
<input type='hidden'>
<input type='submit' value='Download'>
</form>
但我沒有想法如何將信息從我的第一個視圖傳遞到我的下載視圖,或將html表信息作爲對象傳遞給我的下載視圖。 (我試着將{{var_list}}作爲一個值傳遞給這個html表單,從中提取數據並創建一個新的查詢對象,但是這並不適用於每個表格,因爲它們太大了。
有沒有?辦法從第一視圖點擊下載查看我怎麼能去這樣做把我的var_list對象
感謝
你可以把lab_query在varlist.html表單的隱藏字段,並運行VarSamRun.objects.filter(在下載查看樣品= lab_query)再次 –