我想从django传递一个变量来反应app。我知道我可以通过从html页面传递window对象来实现它,但我想知道是否可以使用环境变量来实现它。我发现了使用How can I pass a variable from 'outside' to a react app?文件提及的此链接.env。请告知它如何与Django / Python设置一起使用。
答案 0 :(得分:1)
将其渲染到模板中的脚本标记中:
<script type="text/javascript">
var globallyVisibleVar = {myVar}
</script>
但是你必须确保变量是json序列化的。您可以在写入模板标签或json序列化它之前将其传递给模板上下文。另外,请确保使用var
而不是const
或let
,因为它们是块范围的,并且在您的反应应用中不会全局可见。
修改强>
正如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攻击 攻击强>