如何在Django中配置多自定义应用路径及实现应用间切换?
Django跨应用路由配置与页面跳转实操指南
我来一步步给你梳理清楚怎么在你的MyProject里实现从HappyHomes到HappyHomesAdmin的跳转,包括路由配置和视图里的跳转逻辑:
一、URL路由配置:总共要修改3个文件
首先得把两个应用的路由都配置好,具体步骤如下:
1. 给两个应用分别创建独立的urls文件(如果还没建的话)
先在HappyHomes和HappyHomesAdmin这两个应用的目录下,各自新建一个urls.py文件——这是Django拆分应用路由的标准做法,能让代码更清晰、易维护。
2. 配置应用内的路由
- 打开
HappyHomes/urls.py,注册reg页面的路由:
from django.urls import path from . import views urlpatterns = [ # name参数是路由的唯一标识,后续跳转依赖它,一定要设置 path('reg/', views.reg_view, name='reg_page'), ]
- 再打开
HappyHomesAdmin/urls.py,配置home页面的路由:
from django.urls import path from . import views urlpatterns = [ path('home/', views.admin_home_view, name='admin_home_page'), ]
3. 配置项目根目录的urls.py
把两个应用的路由挂载到项目的根路由上,这样Django才能正确匹配到各个应用的页面:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), # 给HappyHomes的路由统一加前缀happyhomes/ path('happyhomes/', include('HappyHomes.urls')), # 给HappyHomesAdmin的路由统一加前缀happyhomesadmin/ path('happyhomesadmin/', include('HappyHomesAdmin.urls')), ]
现在你访问/happyhomes/reg/就能打开reg.html,访问/happyhomesadmin/home/就能打开home.html了。
二、在views.py中设置跨应用跳转
有两种常用方式,推荐第一种,灵活性更高:
1. 用reverse()生成跳转URL(推荐)
在HappyHomes/views.py的reg视图函数里,处理完业务逻辑后,通过路由的name参数跳转,这样就算以后修改路由前缀,也不用改动这里的代码:
from django.shortcuts import render, redirect from django.urls import reverse def reg_view(request): # 这里写你的业务逻辑,比如用户注册表单验证 if request.method == 'POST': # 假设注册成功,跳转到管理员首页 return redirect(reverse('admin_home_page')) # GET请求时返回reg页面 return render(request, 'reg.html')
2. 直接硬编码URL(不推荐)
如果图一时省事,也可以直接写死URL,但后续路由变更时需要手动修改,维护成本高:
from django.shortcuts import render, redirect def reg_view(request): if request.method == 'POST': return redirect('/happyhomesadmin/home/') return render(request, 'reg.html')
三、模板里直接加跳转链接(从reg.html跳转到home.html)
如果是在reg.html页面里加跳转按钮或链接,用Django的模板标签{% url %}是最稳妥的:
<!-- 在HappyHomes/templates/reg.html里添加 --> <button><a href="{% url 'admin_home_page' %}">进入管理员后台</a></button>
这样不管以后路由前缀怎么调整,只要admin_home_page这个name不变,链接就永远有效。
内容的提问来源于stack exchange,提问作者Maitri Patel
相关产品推荐
相关产品推荐

