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

Angular 8.0前端访问Django Admin遇阻:配置路由后无法打开面板求解

需求可行性及解决方法

可行性说明

完全可行。问题核心在于Angular本地服务器(端口4203)与Django后端服务器是两个独立服务,直接访问Angular地址的/superadmin会被Angular路由接管,不会自动转发到Django。只需配置请求转发即可实现需求。

解决步骤

1. 配置Angular代理转发

在Angular项目根目录创建proxy.conf.json文件,添加以下内容:

{
  "/superadmin": {
    "target": "http://localhost:8000",
    "secure": false,
    "logLevel": "debug"
  }
}

该配置会将所有以/superadmin开头的请求,转发到运行在8000端口的Django服务器(若你的Django端口不同,修改target值即可)。

2. 修改Angular启动命令

打开项目根目录的package.json,找到scripts下的start命令,修改为:

"start": "ng serve --port 4203 --proxy-config proxy.conf.json"

这样启动Angular时会自动加载代理配置。

3. 修复Django路由问题

你的原路由存在两个问题:一是未导入routers和include会导致报错;二是通配路由r'^'放在superadmin前面,会优先匹配所有请求,覆盖Admin路由。调整后的路由代码如下:

from django.urls import path, re_path, include
from django.contrib import admin
from django.views.debug import default_urlconf
from rest_framework import routers

router = routers.DefaultRouter()

urlpatterns = [ 
    re_path(r'^superadmin/', admin.site.urls),
    re_path(r'^', include(router.urls)),
    re_path(r'^$', default_urlconf),
]

将superadmin路由放在最前面,确保Admin请求能被正确匹配。

4. 启动服务测试

  • 先启动Django服务器:python manage.py runserver
  • 再启动Angular服务器:npm start
  • 访问http://localhost:4203/superadmin/,即可正常打开Django Admin面板。

生产环境补充

若部署到生产环境,无需代理配置,可将Angular打包后的静态文件放入Django静态资源目录,或使用Nginx等反向代理工具,将/superadmin路径请求转发到Django服务,其余路径返回Angular静态文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:22:52