Интеграция Django с React router dom

Я пытаюсь обслуживать статические веб-файлы на моем бэкенде Django framework. Я использую react с маршрутизатором Dom на моем фронтенде и Django с фреймворком rest. Проблема в том, что я могу обслуживать страницу с маршрутом '' на Django, но другие маршруты, определенные во frontend, такие как posts, не могут быть обслужены на Django.

Frontend react:

App.js

import React from 'react';
//import { Switch, Redirect } from 'react-router-dom';
//import { Navigate } from 'react-router-dom';
import "../stylesheets/templatemo-style.css";
// importing components from react-router-dom package
// import {
//   BrowserRouter as Router,
//   Routes,
//   Route,

// } from "react-router-dom";
import { HashRouter as Router, Route, Routes } from "react-router-dom";
// import Home component
import Home from "./Home.js";
import User from "./User.js";
// import Post component
import Comment from "./Comment.js";
import Post from "./Post.js";
import Account from "./Account.js";
//import User from "./components/User";

class App extends React.Component {
    render(){ 
    return (
        <>

            <div className = "App">
                {/* This is the alias of BrowserRouter i.e. Router */}
  

                <Router>
                    <Routes>
                        <Route exaxt path = '' element={<Account/>} />
                        <Route path = 'posts'element={Post}/>
                    </Routes>
                </Router>
            </div>
        </>
    );
  }
}
export default App;
    

А приложение отображается в index.js

import React from 'react'
import ReactDOM from 'react-dom'

import App from './components/App'
import User from './components/User'

const reactContentRoot = document.getElementById("root")

//ReactDOM.render(\<Post /\>, reactContentRoot)
//ReactDOM.render(\<Home /\>, reactContentRoot)
ReactDOM.render(\<App /\>, reactContentRoot)

А вот бэкенд Django:

Часть моего файла setting.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            os.path.join(BASE_DIR, 'my-app/build'),
            # os.path.join(BASE_DIR, 'staticfiles')
            ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
    {
        'NAME':'Auth Template',
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR, '/templates'],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.0/howto/static-files/

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
# MEDIA_ROOT = '/media/'
# MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
ADMIN_MEDIA_PREFIX = '/media/' 
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'my-app/build/static'),
)

STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

И мой urls.py

"""savior URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include, re_path
from django.conf import settings
from django.conf.urls.static import static
from django.views.generic import TemplateView


urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include('posts.api.urls')),
    path('api/', include('accounts.api.urls')),
    path('api/', include('user.api.urls')),
    path('api/', include('comments.api.urls')),
    path('api/', include('users.api.urls')),
    path('', TemplateView.as_view(template_name="index1.html")),
    # path('home', TemplateView.as_view(template_name="index.html")),
    path('accounts/', include('allauth.urls')),
    path('home', TemplateView.as_view(template_name="index.html")),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Вернуться на верх