You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么React路由与Django Rest Framework的URL规则发生冲突

问题根因

你遇到的问题是两个配置错误叠加导致的:

  1. Django全局通配路由没有排除后端接口路径,异常拦截了API请求
  2. React路由配置存在逻辑冲突,导致首页加载失败

具体修复方案

1. 修正Django urls.py配置

你当前的全局通配re_path会匹配所有路径,即使你把API路由写在前面,部分特殊场景(比如Django自动补全斜杠的重定向过程)仍可能出现API请求被通配规则拦截的情况,直接修改通配规则排除/api和/admin前缀的路径即可:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/games/', include('picksix.urls')),
    path('api/users/', include('user.urls')),
    path('', TemplateView.as_view(template_name="index.html")),
    # 修改后的全局通配规则,排除api、admin前缀的后端路径
    re_path(r'^(?!api|admin)(?:.*)/?$',TemplateView.as_view(template_name="index.html"))
]

修改后所有/api、/admin开头的请求都会正常匹配前面的业务路由,不会被返回HTML。

2. 修正React App.js路由配置

你当前的路由配置存在逻辑矛盾:

  • 你配置了从根路径/重定向到/home,但没有定义/home对应的路由规则
  • 重定向规则优先级高于后面的根路径路由,你写的<Route exact path="/" component={HomeScreen} />永远不会生效
    两种修正方式二选一即可:

方式一:删除重定向规则,直接映射根路径到首页

function App() {
  return (
    <Router>
      <Switch>
        <Route exact path="/login" component={LoginScreen} />
        <Route exact path="/team/:name" component={TeamDetailScreen} />
        <Route exact path="/" component={HomeScreen} />
      </Switch>
    </Router>
  );
}

方式二:补充/home路由规则

function App() {
  return (
    <Router>
      <Switch>
        <Redirect exact from="/" to="/home" />
        <Route exact path="/login" component={LoginScreen} />
        <Route exact path="/team/:name" component={TeamDetailScreen} />
        <Route exact path="/home" component={HomeScreen} />
      </Switch>
    </Router>
  );
}

可选校验项

如果你是部署后出现的问题,再检查下Nginx配置,确保所有/api、/admin开头的请求都被转发到Gunicorn服务,其余静态路径正常返回index.html即可。

内容的提问来源于stack exchange,提问作者enjoi4life411

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:54:03