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

Django项目中如何从一个应用的视图重定向到另一应用的视图

Django跨应用重定向实现方案

问题根因

你当前项目的member和ctr两个应用都在urls.py中定义了名为foradmin的路由,Django默认会优先匹配当前应用下的同名路由,因此直接写redirect('foradmin')无法跳转到ctr应用的对应页面。

解决步骤

  1. 为应用路由配置命名空间
    首先分别在两个应用的urls.py头部声明应用名,避免路由名冲突:
    在ctr/urls.py开头添加:
app_name = 'ctr'

在member/urls.py开头添加:

app_name = 'member'

然后确认项目根目录的urls.py中已经正确引入两个应用的路由配置:

from django.urls import path, include

urlpatterns = [
    # 其他全局路由
    path('member/', include('member.urls')),
    path('ctr/', include('ctr.urls')),
]
  1. 修改重定向逻辑
    修改member/views.py中的登录重定向代码,指定使用ctr应用的路由命名空间:
def loginpage(request):
    if user is not None:
        login(request, user)
        if user.is_superuser:
            # 增加命名空间前缀,明确指定跳转到ctr应用的foradmin路由
            return redirect('ctr:foradmin')

可选优化

如果你member应用下的foradmin视图和对应路由没有实际用途,可以直接删除member/urls.py中的path('foradmin', views.foradmin, name="foradmin")配置,以及member/views.py中多余的foradmin视图,避免后续路由混淆。

效果验证

修改完成后重启Django服务,使用超级管理员账号登录,即可直接跳转到ctr应用对应的foradmin.html页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 06:54:01