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

使用django-nextjs渲染Next.js页面时出现ERR_TOO_MANY_REDIRECTS错误

解决Django-Next.js整合中/about/页面的重定向循环问题

问题原因

你的路由配置存在重复定义,且自定义视图调用render_nextjs_page_sync时未指定对应页面路径,导致Django与Next.js之间触发无限重定向:

  • 你通过path("", include("django_nextjs.urls"))引入了django-nextjs的自动路由,它会代理所有Next.js页面的请求
  • 之后又手动定义了index和about视图,与自动路由产生冲突
  • 访问/about/时,自定义视图调用render_nextjs_page_sync但未指定page参数,Next.js无法正确匹配页面,返回重定向进而形成循环

解决方法

方法1:使用django-nextjs的自动路由(推荐)

直接移除自定义的index和about视图及对应路由,让django-nextjs自动代理所有Next.js页面:

修改Django路由配置:

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

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

此时django-nextjs会自动处理根路径/和/about/的请求,无需手动编写视图。

方法2:保留自定义视图并指定页面参数

若需要在视图中添加额外逻辑,需在调用render_nextjs_page_sync时明确指定对应Next.js页面的路径:

修改Django视图代码:

from django_nextjs.render import render_nextjs_page_sync

def index(request):
    return render_nextjs_page_sync(request, page="/")

def about(request):
    return render_nextjs_page_sync(request, page="/about")

同时调整路由顺序,将自定义视图路由放在include("django_nextjs.urls")之前,避免自动路由拦截请求:

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path("", views.index, name="index"),
    path("about/", views.about, name="about"),
    path("", include("django_nextjs.urls")),
]

额外检查

  • 确认Next.js的about页面路径正确:Pages Router下需为pages/about.js;App Router下需为app/about/page.js
  • 确保django-nextjs的核心配置(如NEXTJS_SERVER_URL)已正确设置,保证Django能正常访问Next.js服务

内容的提问来源于stack exchange,提问作者Kevin Nyarang'o

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 07:31:06