加载结果来自请求。获取进入Django模板(tableau)?

2024-05-13 23:59:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个超级小的(单视图)django应用程序,它从tableau服务器加载一个视图。你知道吗

我已经让它与trust app method的连接一起工作了,如果我把URL放到浏览器中,它就可以正常加载了。你知道吗

但是,当我尝试在django模板中呈现同一个页面时,django尝试加载所有资源,就像它们在本地存在一样(这不起作用)。你知道吗

视图如下所示:

def index(request):
    url = os.environ.get("tableau_HOST")
    username = request.user.username
    ticket = get_tableau_ticket(url, username)
    if ticket:
        data = requests.get(url+ticket+'/views/SIPPlan/DashboardView', data={'username': username})
        print(data.text)
    else:
        # Handle the error - not implemented yet
        r = ticket
    return render(
        request,
        "tableau/index.html",
        {
            "tableau_data": data.text,
        },
    )

在我的模板中,它看起来像这样:

{% extends "myapp/base_template.html" %}
{% load static %}
{% block content %}
    {% autoescape off %}
        {{ tableau_data }}
    {% endautoescape %}
{% endblock %}

当我加载视图时,我看到它试图从本地机器加载资源(它不应该这样做,它们存在于tableau服务器上)。你知道吗


[09/Aug/2019 08:26:28] "GET /vizql/v_201921906211547/javascripts/formatters-and-parsers.en_US.js HTTP/1.1" 404 3610
Not Found: /vizql/v_201921906211547/javascripts/vqlweb.js
2019-08-09 08:26:28,639 - django.request       WARNING  Not Found: /vizql/v_201921906211547/javascripts/vqlweb.js
[09/Aug/2019 08:26:28] "GET /vizql/v_201921906211547/javascripts/vqlweb.js HTTP/1.1" 404 3544
Not Found: /vizql/v_201921906211547/javascripts/require.min.js
2019-08-09 08:26:28,700 - django.request       WARNING  Not Found: /vizql/v_201921906211547/javascripts/require.min.js

...etc...

但是,如果我只是点击我在浏览器中构建的URL(不是嵌入在模板中),它会呈现良好的效果。你知道吗

所以我想我的问题是:有没有一种好的方法可以在django模板页面中呈现另一个HTML页面?我好像不知道该怎么办。你知道吗


Tags: django视图模板urldatarequestjsusername
1条回答
网友
1楼 · 发布于 2024-05-13 23:59:45

要嵌入Tableau,应该使用它们的embed code (script tag) 或者使用Tableau JS API。在引擎盖下,任何一个路由最终都会创建一个iframe,其中包含视图的URL和其他内容。你知道吗

你要做的是从Tableau获取HTML并将其插入到服务器端的网页中,然后由Django服务器提供服务。当HTML引用的资产试图加载时,它会查看Django服务器而不是Tableau服务器,因为它是从那里提供服务的。你知道吗

不要在服务器端请求HTML,只需将嵌入代码放入页面(包括可信令牌,请参见Tableau's Docs了解如何实现),并让Tableau的嵌入脚本来处理它。你知道吗

相关问题 更多 >