Django多应用URL整合:如何配置实现/user/blogs路径而非根路径blogs
Django多应用URL前缀配置方案
操作步骤
1. 修改项目根路由配置
打开项目根目录下和settings.py同层级的urls.py文件,将blogs应用的路由挂载到user/前缀下:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), # 原有用户账户应用的路由配置,保持不变 path('user/', include('你的用户账户应用名.urls')), # 新增blogs应用路由,同样挂载到user前缀下 path('user/', include('blogs.urls')), ]
配置后blogs应用内定义的所有路由都会自动带上/user/前缀,原默认的/blogs路径会自动失效。
2. 配置blogs应用内部路由
打开blogs应用目录下的urls.py文件,按需求定义路径:
from django.urls import path from . import views # 配置app_name方便后续反向解析链接 app_name = 'blogs' urlpatterns = [ # 此处路径与上级/user/前缀拼接后为/user/blogs,匹配你的需求 path('blogs', views.你的博客列表视图函数名, name='user_blogs'), ]
3. 导航栏链接配置
在模板的导航栏部分直接使用Django反向解析生成链接,避免硬编码出错:
<a href="{% url 'blogs:user_blogs' %}">blogs</a>
渲染后自动生成/user/blogs的跳转链接。
可选进阶配置
如果你的/user/blogs需要展示指定用户的博客,可将用户参数放在上级路由统一传递:
- 根路由修改为:
path('user/<int:user_id>/', include('blogs.urls')),
- blogs应用的视图函数直接接收参数:
def blogs_list(request, user_id): user_blogs = Blog.objects.filter(author_id=user_id) return render(request, 'blogs/list.html', {'blogs': user_blogs})
最终访问路径为/user/123/blogs,符合常见的用户资源路径设计规范。
注意事项
- 如果需要同时保留
/blogs和/user/blogs两个访问路径,只需在根路由中新增一条path('blogs/', include('blogs.urls'))配置即可 - 配置完成后可执行
python manage.py check命令检查路由是否存在冲突
内容的提问来源于stack exchange,提问作者ailsin
相关产品推荐
相关产品推荐

