2

変更された質問:5/5/12 2:34 pm(PST)

フォームPOSTデータからテンプレートをレンダリングできるかどうかを知りたいのですが、そのテンプレートで、テンプレートで使用されたものと同じPOSTデータのExcelスプレッドシートへのボタン/リンクを提供します。

POSTを使用してExcelをダウンロードし、POSTを使用してテンプレートをレンダリングしましたが、フォームの[送信]ボタンを押すと次のようになります。1。ビューからテンプレートに情報を送信し、テンプレートを用意します。情報をレンダリングします。テンプレートにはボタン/リンクがあり、クリックするとウィンドウがポップアップ表示され、.XLSファイルを開く/保存するかどうかをユーザーに尋ねます。

それぞれを実行するために使用しているコードは次のとおりです
。1新しいURLでテンプレートをレンダリングする
return render_to_response('report/result.html', {long dictionary}, context_instance=RequestContext(request))

2テンプレートを使用して.XLSファイルとしてエクスポートします。
response2 = render_to_response('report/result.html', {long dictionary}, context_instance=RequestContext(request))
filename = "ToolboxReport%s.xls" % (datetime.now())
response2['Content-Disposition'] = 'attachment; filename='+filename
response2['Content-Type'] = 'application/vnd.ms-excel; charset=utf-8'
return response2

意図した順序は次のとおりです。1。[オプション]ページでオプションを選択し、[レポートの生成]ボタンをクリックします。2。[結果]ページで、情報を表示し、ボタン/リンクを表示して、この情報を.XLSとしてダウンロードします。3。(オプション)ダウンロードボタンをクリックします。保存オプションは、.XLSと同じ情報をダウンロードするように見えます

[オプション]ページから[結果]ページと.XLSダウンロードの両方で使用するPOSTデータを取得できないようです。

4

2 に答える 2

3

フォームで2つの異なるボタンを使用します。1つは結果を一覧表示するためのもので、もう1つはExcelにエクスポートするためのものです。

フォームテンプレートの場合:

<input type="submit" name="list" value="List Results" />
<input type="submit" name="excel" value="Export to Excel" />

そして私のビュー関数では:

# process your post data here...

# end processing your post data
if request.REQUEST.get('excel'): 
    # excel button clicked
    result = '<your content result here>'
    response = http.HttpResponse(result.encode("<encoding>", 'ignore'), content_type='application/vnd.ms-excel;charset=<charset>')
    response['Content-Disposition'] = 'attachment; filename="reports.csv"'
    response['Expires'] = "Mon, 26 Jul 2013 05:00:00 GMT"
    return response
elif request.REQUEST.get('list'):
    # List button clicked
    return render_to_response(<some render param here>, <some context>, <etc>)
于 2012-05-09T08:52:12.433 に答える
1

前の投稿から取得した情報と送信ボタンを含む非表示の入力タグを使用してフォームを作成する必要があります。ダウンロードするビューを通知するパラメータを追加します。

于 2012-05-05T12:24:50.383 に答える