如何使用django获取上下文的反应

时间:2017-04-17 18:10:03

标签: python django reactjs

我需要使用django进行反应 但我不能这样做

这是我的代码 在我的jsx

<h1>{{titulo}}</h1>
<h2>{{ejemplo}}</h2>

在我的模板中:

{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
    <title>Index</title>
</head>
<body >
<div id="app"></div>
<script type="text/javascript" src="{% static 'bundle.js' %}"></script>
</body>
</html>

在我看来py:

def registro (request,giro):
    reg = 'Registro Normal'
    if giro==1:
        reg='Registro Especial'

    context = {
        'ejemplo':'tests',
        'titulo':reg
    }
    return render(request,'home/registro.html',context)

但是没有呈现并且出现了狂野错误:(

未捕获的ReferenceError:未定义titulo

1 个答案:

答案 0 :(得分:5)

Django上下文仅在模板在服务器上呈现。 React使用Javascript,这意味着它在浏览器上呈现 。如果你想在你的React应用程序中使用Django变量,你需要在Javascript中设置这些变量(确保在导入bundle.js之前这样做。)

因此,您的模板可能如下所示:

{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
    <title>Index</title>
</head>
<body >
<div id="app"></div>

<script type="text/javascript">
  /* Put your context vars here. I recommend putting them under 
     a variable to avoid naming conflicts. 
  */
  var context = {
    titulo: '{{titulo}}',
    ejemplo: '{{ejemplo}}'
  };
</script>

<script type="text/javascript" src="{% static 'bundle.js' %}"></script>
</body>
</html>

然后在React中,您可以引用context.variable来获取所需的值。