Сервер Tableau, размещенный на AWS, и встраивание с помощью Django
У меня есть сервер Tableau, настроенный на экземпляре AWS. Я опубликовал приборную панель на сервере (используя пробную версию). Сейчас я пытаюсь отобразить ее на веб-странице локально. Я пробовал следующие шаги:
Примечание: Я заменил свой код с оригинальным экземпляром ec2 на "ec2-server" только в целях конфиденциальности.
- I copied the embedded code from the share option in the server and pasted in the html file that i am rendering in django. It requests me to log in to the server and then displays the same login page again and again. ( I tried this method with tableau online and instantly i was able to display my dashboard).
Предлагается снова войти в систему, но ничего не происходит...
Затем я ознакомился с Trusted Authentication из документации Tableau и придумал следующий код для получения билета и внедрения его в представление, которое отображает мою страницу home.html :
from django.shortcuts import render
from django.http import HttpResponse
from rest_framework import status
from rest_framework.response import Response
import requests
from rest_framework.decorators import api_view
import sys
def home(request):
#I have replaced my code with original ec2 instance with "ec2-server" just for confidential purpose.
url = 'http://ec2-server.compute-1.amazonaws.com/trusted/'
payload = {'username=':'admin'}
workbookView = 'FirstView/Dashboard1'
r = requests.post(url, data={'username': 'admin'})
if r.status_code == 200:
if r.text != '-1':
ticketID = r.text
print("\n\nThis is ticket:\n\n",ticketID)
else:
print("Tableau Server could not issue trusted ticket")
sys.exit()
else:
print('Could not get trusted ticket with status code',str(r.status_code))
url = url + ticketID + '/views/' + workbookView
print("\n\nThis is URL:\n\n",url)
r = requests.get(url,allow_redirects=False)
#print (r.cookies['workgroup_session_id'])
print ("\n\nThese are cookies\n\n",r.cookies)
url2 = 'http://ec2-server.compute-1.amazonaws.com' + '/views/' + workbookView
r2 = requests.get(url2,cookies=r.cookies)
# print('This is r2!')
# print(r2.text)
return render(request,'dashboard/home.html',{'ticket':ticketID})
Вот что я получаю на своей веб-странице :
Я уже добавил свой ip-адрес в список доверенных узлов сервера Tableau. Я не уверен, почему я не могу получить просмотр. Также вот мой HTML код :
<!DOCTYPE html>
<html>
<head>
<title>
</title>
</head>
<body>
<h1>Dashboard Home</h1>
<!-- Embedded way -->
<!-- <script type='text/javascript' src='http://ec2-server.compute-1.amazonaws.com/javascripts/api/viz_v1.js'></script>
<div class='tableauPlaceholder' style='width: 1000px; height: 827px;'><object class='tableauViz' width='1000' height='827' style='display:none;'>
<param name='host_url' value='http%3A%2F%2Fec2-server.compute-1.amazonaws.com%2F' />
<param name='embed_code_version' value='3' /> <param name='site_root' value='' />
<param name='name' value='FirstView/Dashboard1' /><param name='tabs' value='no' />
<param name='toolbar' value='yes' /><param name='showAppBanner' value='false' /></object>
</div> -->
<!-- Iframe -->
<!-- <iframe width="1335px" height="894px" src="http://ec2-server.compute-1.amazonaws.com/views/FirstView/Dashboard1?:showAppBanner=false&:display_count=n&:showVizHome=n&:origin=viz_share_link">
</iframe> -->
<div><h1>THis is the ticket value:</h1>
<h4>{{ticket}}</h4>
<h5>"trusted/+{{ticket}}+/views/FirstView/Dashboard1"</h5>
</div>
<script type="text/javascript" src="http://ec2-server.amazonaws.com/javascripts/api/viz_v1.js"></script>
<object class="tableauViz" width="900" height="700" style="display:none;">
<param name="path" value="trusted/+{{ticket}}+/views/FirstView/Dashboard1" />
</object>
</body>
</html>