从django传递环境变量来反应app

时间:2017-06-27 16:12:52

标签: django reactjs

我想从django传递一个变量来反应app。我知道我可以通过从html页面传递window对象来实现它,但我想知道是否可以使用环境变量来实现它。我发现了使用How can I pass a variable from 'outside' to a react app?文件提及的此链接.env。请告知它如何与Django / Python设置一起使用。

1 个答案:

答案 0 :(得分:1)

将其渲染到模板中的脚本标记中:

<script type="text/javascript">
    var globallyVisibleVar = {myVar}
</script>

但是你必须确保变量是json序列化的。您可以在写入模板标签或json序列化它之前将其传递给模板上下文。另外,请确保使用var而不是constlet,因为它们是块范围的,并且在您的反应应用中不会全局可见。

修改

正如create-react-app的文档所说:

  

环境变量在构建期间嵌入。由于Create React App生成静态HTML / CSS / JS包,它无法在运行时读取它们 。要在运行时读取它们,您需要将HTML加载到服务器上的内存中,并在运行时替换占位符,就像描述here一样。或者,您可以随时在服务器上重建应用程序。

由于您不希望在每个请求中重新使用整个javascript,因此您无法在服务器应用程序(django)和客户端应用程序(反应)之间共享动态数据。

因此,如果您点击链接,您将会看到:

  

将数据从服务器注入页面

     

与上一节类似,您可以留下一些占位符   注入全局变量的HTML,例如:

<!doctype html>
<html lang="en">
    <head>
    <script>
        window.SERVER_DATA = __SERVER_DATA__;
    </script>
  

然后,在服务器上,您可以用JSON替换__SERVER_DATA__   发送响应之前的真实数据。然后客户端代码可以   阅读window.SERVER_DATA以使用它。 确保清理JSON   在将其发送到客户端之前,因为它会使您的应用容易受到XSS攻击   攻击