将数据从view.py发送到django中的javascript

时间:2016-12-13 14:12:10

标签: javascript python django pandas

我知道之前已经问过类似的问题,但我对django和js很新。我已经尝试了很多解决方案,但我无法理解许多解决方案并能够运行它们。所以我正在编写我的代码和我尝试过的解决方案。有人可以告诉我,我在做什么错误。

在我的views.py中,我正在处理一个产生一些结果的文件。这些结果采用Dataframe(使用过的pandas)的形式。从这个数据帧我计算几个存储在变量tot,p,lp,us中的整数值。我还得到了3个子数据帧:dfp,dflp,dfus。我需要在网页上显示所有这些内容,以便将其发送到html:uploaded.html,如下所示。

   dict_1 = {'Path':p, 'LPath':lp, 'USig':us}
   json1 = json.dumps(dict_1)

   return render(request, 'uploaded.html', locals(), {'js_json1': json1, 'TotVar': tot})

上面的代码只是发送变量而不是数据帧,因为我不知道如何去做。我已通过以下方式在uploaded.html处理了它:

<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <title>Upload File-Hereditary Cancers</title>
    <link rel="stylesheet" href="/static/css/style.css" type="text/css">
    <script type="text/javascript">
        function results()
                {
                 var totalvariants = {{TotVar}};
                document.getElementById("totvar").innerHTML = "Total number of variants are: "+totalvariants;
                }
  </script>
</head>
<body>
    <div id="header">
        <div>
            <div class="logo">
                <a href="index.html">Hereditary Cancers</a>
            </div>
            <ul id="navigation">
                <li>
                    <a href="index.html">Home</a>
                </li>
                <li>
                    <a href="about.html">About</a>
                </li>
                <li class="active">
                    <a href="uploadfile.html">Upload File</a>
                </li>
                <li>
                    <a href="team.html">Team</a>
                </li>
                <li>
                    <a href="contact.html">Contact Us</a>
                </li>
            </ul>
        </div>
    </div>
    <div>
      {% if saved %}
         <strong>Your file was uploaded.</strong>
                 <button onclick = "results()">Results</button>
                 <p id = "totvar">This will change</p>
      {% endif %}

      {% if not saved %}
         <strong>Your file was not uploaded.</strong>
      {% endif %}
  </div>
  <div id="footer">
        <div class="clearfix">
            <div id="connect">
                <a href="http://freewebsitetemplates.com/go/facebook/" target="_blank" class="facebook"></a><a href="http://freewebsitetemplates.com/go/googleplus/" target="_blank" class="googleplus"></a><a href="http://freewebsitetemplates.com/go/twitter/" target="_blank" class="twitter"></a><a href="http://www.freewebsitetemplates.com/misc/contact/" target="_blank" class="tumbler"></a>
            </div>
            <p>
                © 2023 Zerotype. All Rights Reserved.
            </p>
        </div>
    </div>
  </body>
</html>

我在html中创建了一个按钮,可以在点击时激活脚本。我的脚本没有做太多,因为我不知道该怎么做。我刚试图显示也没有显示的tot变量。任何人都可以告诉我关于如何在js函数中处理数据帧和变量并显示结果的完整脚本。

1 个答案:

答案 0 :(得分:1)

我不知道你在做什么,但你发送locals()作为上下文。首先,你为什么这样做?你不能在模板中使用它们。第二,你应该在render()中的第三个参数中发送你的上下文,如果你需要在模板上下文中使用locals,那么写一下这样的东西:

ctx = locals() 
ctx.update(
    js_json1 = json1,
    TotVar = tot,
) 
return render(request, 'uploaded.html', ctx)

ctx = {
    'locals': locals(),
    'js_json1': json1,
    'TotVar': tot,
}
return render(request, 'uploaded.html', ctx)

https://docs.djangoproject.com/en/1.10/topics/http/shortcuts/#render