首页 > 解决方案 > 如何在 django 项目中使用 react-router 处理 404 错误

问题描述

我目前正在构建一个 django-react 网络应用程序,我想知道如何在 react-router 而不是 django 端处理我的 404 错误,这是我的代码,404 错误将在 django 服务器端路由...

urlpatterns = [
path('admin/', admin.site.urls),
re_path(r'^api/', include(urls)),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,
                      document_root=settings.MEDIA_ROOT)


routes = getattr(settings, 'REACT_ROUTES', [])
# urlpatterns += [url(r'^', 
TemplateView.as_view(template_name='index.html'))]
urlpatterns += [url(r'^(%s)?$' % '|'.join(routes),TemplateView.as_view(template_name='index.html'))]

标签: djangoreactjsdjango-rest-frameworkreact-router

解决方案


这就是我会做的:

首先使用接受任何东西的正则表达式模式从 django 定义一个 url:

url(r'^.*$', TemplateView.as_view(), name="home")  # This is the view which servers the react application

并将此路径添加到 urlpatterns 的底部。

其次,在 React App 中添加新的路由器:

<Route component={NotFoundComponent} />  // This component is for showing 404 page.

对于其余的路由器应该有确切的.

您可以查看本教程,了解如何在 react 中实现 404 页面。


推荐阅读