【发布时间】:2016-01-18 05:12:00
【问题描述】:
我正在尝试在我的 Django 应用程序中使用 reactjs 和 react-router (1.x),但我很难将所有这些放在一起。这是 github 项目,以防我在这个问题中没有提供足够的信息。
https://github.com/liondancer/django-cherngloong
我在我的routes.js 中创建了一个path="about"
var routes = (
<Router>
<Route path="/" component={ Views.Layout }>
<IndexRoute component={ Views.Index } />
<Route path="about" component={ Views.About } />
</Route>
<Route path="*" component={ Views.RouteNotFound } />
</Router>
);
export default routes;
我的layout.js
class Layout extends React.Component {
constructor(props) {
super(props);
}
render() {
return (
<div id="review-web">
<header className="header">
<LogoElement />
<CenterPiece />
</header>
<div>
{ React.cloneElement(this.props.children, { path: this.props.path }) }
</div>
<Footer />
</div>
);
}
}
export default Layout;
当我输入localhost.8000/about 时,我收到404 Django 错误
我的目标是保持前端和后端分开,所以我相信我应该能够将 Django 用作数据的端点,而不是呈现视图。
【问题讨论】:
-
当您转到“/”时,它是否成功地服务于 Views.Layout 页面?在我看来,您的应用程序似乎不知道服务器或查看 routes.js。您是否将应用配置为使用 routes.js?
-
如果你这样做,它会起作用吗:
(请参阅我在路径开头使用的斜杠)。编辑:另外,你确定你不想单独包含这一行“ ”吗?它目前嵌套在另一条路线内。 -
您需要在 Django 应用程序中拆分您的路线处理 - 例如直接为 Django 提供以
/api/*为前缀的任何内容,以及为/path/to/your/index.html提供任何其他(通配符) - 这是您的 React 应用程序。否则 Django 将/about路由解释为它自己的 - 它不会与 React 应用程序对话(它不能)。 -
@elithrar 好主意!但如果是通配符 * 服务器将为每个请求返回 http status_code 200,但是对于不存在的 url 返回 http status_code 404 很好。
标签: javascript python django reactjs react-router