html、js簡單實現含中文csv檔案下載(後端為django)

來源:互聯網
上載者:User

標籤:writer   char   write   檔案   資料庫   日誌   提取   attach   int   

1.在django  views.py中使用HttpResponse:

  views.py首行加上utf-8編碼,將預設unicode編碼變為utf-8

1 # -*- coding:utf-8 -*-

  下面是利用HttpResponse產生csv檔案

1 response = HttpResponse(content_type=‘text/csv;charset=UTF-8‘)2 response.write(codecs.BOM_UTF8)  #加入BOM頭才能在csv檔案中添加中文,否則在excel中是亂碼,此句必須加在下句的前面,不然沒作用3 response[‘Content-Disposition‘] = ‘attachment; filename="systemInteriorLog.csv"‘4 5 writer = csv.writer(response)6 writer.writerow([‘時間‘, ‘日誌ID‘, ‘動作‘, ‘狀態‘, ‘類型‘, ‘內容‘])

  從資料庫中提取的資料中的中文可以用encode()方法編碼,如下:

1 writer.writerow([ log.type.encode(‘utf-8‘), log.description.encode(‘utf-8‘)])

 這裡再說一下decode和encode方法的作用:
  decode()將其他編碼轉換為unicode編碼,如decode(‘gb2313‘)是將gb2312編碼的字串轉為unicode編碼;
  encode()將unicode編碼轉換為其他編碼,如encode(‘gb2312‘)是將unicode編碼的字串轉為gb2312編碼。


2.在url.py中配置views中方法的url路徑

1 url(r‘^download/csv‘, views.download_csv, name=‘dowmload_csv‘)    #分別為路徑名、方法名

 

3.方法一  在html中直接連結到該url實現下載

1 <button type="button" 2 onclick="location.href=‘download/csv‘">3     下載4 </button>

 

4.方法二  在js中實現下載

1 window.location.href=‘download/csv‘;

  

1 var url = "www.xxx.com/index.php";2 window.location.href = url + "?a=1&b=2";    3 //使用location.herf還可以實現向views中的request傳值4 window.location.href=‘/download/interior/csv‘+ ‘?a=‘+$scope.a+‘&b=‘+$scope.b;

 

  在views方法中可以用GET得到傳來的值

1 @http_method_required(‘GET‘)2 def get_interior_csv(request):3     get_a = request.GET.get(‘a‘)4     get_b = request.GET.get(‘b‘)

  之後再在html檔案中調用所寫的js方法即可實現檔案下載

html、js簡單實現含中文csv檔案下載(後端為django)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.