我正在尝试将 reactjs
和 react-router
(1.x
) 与我的 Django 应用程序一起使用,但我遇到了困难把所有这些放在一起。这是 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 用作数据的端点而不是渲染 View 。
最佳答案
我遇到了同样的问题并最终得到了这个解决方案。
设置.py:
REACT_ROUTES = [
'login',
'signup',
'password-reset',
'password-change',
'about',
...
]
urls.py:
routes = getattr(settings, 'REACT_ROUTES', [])
urlpatterns = [
...
url(r'^(%s)?$' % '|'.join(routes), TemplateView.as_view(template_name='index.html')),
]
我不喜欢在 django 设置中复制所有 react-routes,但是如果我们把所有东西都放在那里 url(r'^.*$')
,服务器将始终返回 HTTP status_code 200。这只是能够为不存在的 url 返回有效的 HTTP status_code 404 的一种方法。
关于javascript - 使用 Django + react-router 找不到 404 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33221473/