Django和React路由集成

vddsk6oq  于 2023-11-20  发布在  Go
关注(0)|答案(1)|浏览(99)

我是一个Python Django新手,我正在为一个React Django应用程序编写代码。
我的问题是关于Django和React的路由或集成,到目前为止,我已经为Django创建了一个视图,将React应用程序(index.html)发送到客户端,并将其URL设置在主页“www.domain.com/“上。
客户端可以在该URL和应用程序的工作,但有一个问题,客户端只能从主页和其他URL获取应用程序将显示404错误,这意味着客户端必须首先转到主页,然后转到其他页面,这可能会导致一个问题。
例如,如果客户端没有应用程序,然后直接输入一个用于react路由内部的URL,它会显示错误404,所以Django不会发送应用程序,
我是否需要为React应用的每个页面设置视图?因为我不认为它必须是这样的
我知道Django和React路由是分开的,React有自己的路由,因为它是一个单页应用程序(SPA)。
我在GitHub项目中搜索,在Django URL中找到了一个TemplateView,我需要解决这个问题吗?
谢谢。我需要一个好的解决方案或方法。
编辑:
我的应用程序view.py:

from django.shortcuts import render

def home_page(request):
    return render(request, 'index.html')

字符串
我的应用程序urls.py

from django.urls import path, include, re_path
from .views import home_page
from django.views.generic import TemplateView

urlpatterns = [
    re_path(r'^.*', TemplateView.as_view(template_name='index.html')),  # i have find this code in git repos 
    re_path(r'^.*$', home_page) # @Timi answer 
]


我的项目文件夹urls.py:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('dashboardapp.urls')),
]

mccptt67

mccptt671#

如果你想在Django中优雅地处理未知的URL,你可以在你的应用urls.py中创建一个catch-all路由来重定向到你的主视图。

from django.urls import re_path

from .views import home_page

urlpatterns = [
    re_path(r'^.*$', home_page),  # Catch-all route
]

字符串
这样,当你直接在浏览器中输入一个URL时,Django将提供包含你的React应用的初始HTML,从那里,React接管客户端路由。你不需要在Django中为React应用中的每个页面提供单独的视图。

相关问题