Commit 0847539e authored by ibuler's avatar ibuler

[Update] 修改导出的csv名称

parent b237cbb2
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
# #
import unicodecsv import unicodecsv
from datetime import datetime
from six import BytesIO from six import BytesIO
from rest_framework.renderers import BaseRenderer from rest_framework.renderers import BaseRenderer
...@@ -40,6 +41,16 @@ class JMSCSVRender(BaseRenderer): ...@@ -40,6 +41,16 @@ class JMSCSVRender(BaseRenderer):
row = [item.get(key) for key in header] row = [item.get(key) for key in header]
yield row yield row
def set_response_disposition(self, serializer, context):
response = context.get('response')
if response and hasattr(serializer, 'Meta') and \
hasattr(serializer.Meta, "model"):
model_name = serializer.Meta.model.__name__.lower()
now = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
filename = "{}_{}.csv".format(model_name, now)
disposition = 'attachment; filename="{}"'.format(filename)
response['Content-Disposition'] = disposition
def render(self, data, media_type=None, renderer_context=None): def render(self, data, media_type=None, renderer_context=None):
renderer_context = renderer_context or {} renderer_context = renderer_context or {}
encoding = renderer_context.get('encoding', 'utf-8') encoding = renderer_context.get('encoding', 'utf-8')
...@@ -52,6 +63,7 @@ class JMSCSVRender(BaseRenderer): ...@@ -52,6 +63,7 @@ class JMSCSVRender(BaseRenderer):
try: try:
serializer = view.get_serializer() serializer = view.get_serializer()
self.set_response_disposition(serializer, renderer_context)
except Exception as e: except Exception as e:
logger.debug(e, exc_info=True) logger.debug(e, exc_info=True)
value = 'The resource not support export!'.encode('utf-8') value = 'The resource not support export!'.encode('utf-8')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment