我所做的是在提供静态内容(构建的react应用程序)之后,在 DRF API 中有入口点,它有一个模板,在clientConfig
对象中设置服务器上下文(如果你想设置任何)。
此外,您需要为每个端点创建一个单独的“初始化程序”脚本,其中包含react路由,为它提供正确的选择器,您将在 Django 模板中提到。
网址: path('foobars', views.FooBarsView.as_view(), name='foobars')
查看:
class FooBarsView(TemplateView):
template_name = 'foobars.html'
def get_context_data(self):
return {
"client_config": {}
}
模板(foobars.html):
{% load static from staticfiles %}
<head>
<link rel="stylesheet" href="{% static 'dist/css/foobars.css' %}"/>
</head>
<main class="foobars"></main>
<script type="text/javascript">
var clientConfig = {{ client_config|safe }};
</script>
<script type="text/javascript" src="{% static "dist/js/foobars.min.js" %}"></script>
您必须在 React 应用程序中进行一些更改,即.foobars
在render
方法中使用选择器。
初始化程序:
ReactDOM.render(
<Provider store={store}>
<Router history={history}>
<Switch>
<Route name="index" exact path="/" component={FooBarComponent} />
</Switch>
</Router>
</Provider>,
document.querySelector(".foobars")
);