Django反应渲染

时间:2018-03-14 09:21:50

标签: django reactjs

与django一起创建SPA的最佳方法是什么? 只有rest api或Django渲染的不同部分(例如,作为一个简单的模板)。使用django渲染有什么好处? 感谢。

1 个答案:

答案 0 :(得分:1)

我们目前已将React迷你应用程序集成到我们现有的Django项目中。

我们只返回包含道具的上下文:

class HelloWorld(DetailView):
    template_name = '/path/to/your/template.html'

    def get_context_data(self, **kwargs):
        props = {
            // your props/data
        }

        context = {
                'component': 'overview.js',
                'title': 'Hello World',
                'props': json.dumps(props)
            }

        return context

然后在模板中,我们将道具渲染到全局窗口范围:

<script>
    // Make sure to escape your props to prevent XSS! See here for the source
    // for the json filter: https://gist.github.com/pirate/c18bfe4fd96008ffa0aef25001a2e88f
    window.props = {{props|safe}};
</script>

<script src="/path/to/your/js/{{component}"></script>

然后在React应用程序中,我使用应用程序名称进行渲染并传入window.props。

ReactDOM.render(React.createElement(OverviewApp, window.props), document.getElementById('root');)

您可以在此处详细了解此方法:

https://hackernoon.com/reconciling-djangos-mvc-templates-with-react-components-3aa986cf510a