我有一个D3js网站并正在运行。我遵循的方法是从AWS S3获取文件并创建url模式,然后将其与d3.csv函数一起使用。加载所有可视化文件花费了太多时间,因为它五次达到AWS S3来获取5种不同的CSV作为数据源。
views.py的示例代码如下-
'abc@test.com;xyz@test.com;pqr@test.com;cba@test.com;zyx@test.com;klm@test.com'
我已经为用作仪表板数据源的5个文件创建了5个函数。
urls.py代码-
def func1(request):
LOCAL_PATH = '/var/www/dashboard/templates/graph/'
AWS_ACCESS_KEY_ID = '*********'
AWS_SECRET_ACCESS_KEY = '***********'
bucket_name = 'bucket_name'
# connect to the bucket
conn = boto.connect_s3(AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY)
bucket = conn.get_bucket(bucket_name)
# go through the list of files
bucket_list = bucket.list()
for l in bucket_list:
keyString = str(l.key)
if os.path.exists(LOCAL_PATH+keyString):
os.remove(LOCAL_PATH+keyString) #this deletes the file
l.get_contents_to_filename(LOCAL_PATH+keyString)
csv_data = open('/var/www/dashboard/templates/graph/file1.csv', 'r+').read()
response = HttpResponse(csv_data,content_type='text/csv')
return response
我为所有文件添加了5个网址格式。
具有d3.csv功能的javascript文件-
urlpatterns = [
path('', views.graph, name='graph'),
path('func1/', views.func1, name='func1')
]+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns = format_suffix_patterns(urlpatterns)
此处要求获取具有相同功能的存储桶的所有csv文件,以便我们不再希望再次按下S3。这意味着我们需要为每个csv返回多个响应。另外,我们如何为所有CSV创建多个urlpattern以及如何在不同javascript文件的d3.csv函数中传递它们。请帮忙。