Reacción de enrutamiento y conflicto url django

Estoy usando reactjs como frontend y django como backend. React router se utiliza para enrutamiento. Cuando actualizo la página que ha sido enrutada por el enrutador de reacción, aparece el mensaje 404 Page Not Found error django 404 Page Not Found error . Si actualizo la página de inicio, no recibo ningún error de este tipo porque la plantilla de django representa la página de inicio usando su url.

¿Tengo que configurar eso en el webpack? Mi estructura de proyecto es que he separado django y reactjs. He creado una carpeta como frontend donde reside el archivo reactjs.

ACTUALIZAR

La plantilla de la página principal tiene todos los enlaces para rutas como addrestaurant.

mi archivo webpack.config

 const path = require("path"); if(!process.env.NODE_ENV) { process.env.NODE_ENV = 'development'; } module.exports = { entry: [ './src/index.js' ], output: { path: path.join("../app/static/build/", "js"), filename: "app.js", publicPath: "../app/static/build/" }, devtoo: 'source-map', debug: true, module: { loaders: [{ exclude: /node_modules/, loader: 'babel', query: { presets: ['react', 'es2015', 'stage-1'] } }, {test: /\.(jpe?g|png|gif|svg)$/i, loader: "url-loader?name=images/[name].[ext]"}, ] }, resolve: { extensions: ['', '.js', '.jsx'] }, devServer: { historyApiFallback: true, contentBase: './' } }; 

urls.py

 urlpatterns = [ url(r'^', views.home, name="homePage"), url(r'^(?:.*)/?$', views.home), ] 

home.html

 {% extends 'base.html' %} {% block title %} Foodie | Homepage {% endblock title%} {% block content %} 
{% endblock %} {% block js %} {{ block.super }} var data = { isUserAuthenticated:{% if request.user.is_authenticated %}true{% else %}false{% endif %} }; console.log('data',data); $(function() { app.showHomePage(".homepage",data); }); {% endblock %}

index.js

 window.app = { showHomePage: function(id,data){ render(     , document.querySelector(id) ); }, } 

Banner es un componente secundario del componente de la aplicación

 const Banner = (props) => ( 
Foodie
Home Add Restaurant Products
); export default Banner;

Probablemente el problema es que no ha configurado sus URL para manejar las rutas que están definidas en React Router. En su urls.py Django, debe usar un catch all para hacer coincidir todas las URL con su plantilla de índice

 urlpatterns += [ # match the root url(r'^$', base_view), # match all other pages url(r'^(?:.*)/?$', base_view), ] 

La base_view sería una función de vista que muestra una plantilla que incluye su aplicación en paquete.

En caso de que alguien se lo pregunte, tuve el problema exacto y la respuesta de Paul S lo resolvió. Agregar una respuesta en lugar de un comentario solo porque SO no me permite formatear fragmentos de código dentro de los comentarios. Terminé usando una mezcla de la nueva path() de django path() y las antiguas urls() en mi urls.py :

 urlpatterns = [ path('login/', LoginView.as_view(), name='login'), path('logout/', LogoutView.as_view()), path('/', login_required(TemplateView.as_view(template_name="app.html"), login_url='login')), url(r'^(?:.*)/?$', login_required(TemplateView.as_view(template_name="app.html"), login_url='login')), ] 

Django maneja el inicio de sesión, cierre de sesión y la raíz / . El enrutador React se encarga de todo lo demás

En caso de que alguien tenga este mismo problema, en django 2.0, siga la respuesta de ‘Kevin Martin Jose’ pero en su lugar, reemplace url con re_path

 from django.urls import path, re_path urlpatterns = [ path('login/', LoginView.as_view(), name='login'), path('logout/', LogoutView.as_view()), path('/', login_required(TemplateView.as_view(template_name="app.html"), login_url='login')), re_path(r'^(?:.*)/?$', login_required(TemplateView.as_view(template_name="app.html"), login_url='login')), ]