Django如何实现站点加载时自动跳转至当前登录用户专属首页
实现方案
你需要新增一个根路径的跳转视图,配合路由配置实现自动跳转,无法直接通过静态路由配置自动填充用户名,具体操作如下:
1. 调整根路由配置
修改项目根目录的urls.py,保留空路径规则用于跳转,同时保留你需要的带用户名前缀的路由:
from django.contrib import admin from django.urls import path, include from . import views urlpatterns = [ path('admin/', admin.site.urls), # 根路径指向跳转视图 path('', views.home_redirect, name='home_redirect'), # 带用户名前缀的业务路由 path('<username>/', include('blog.urls')), ]
2. 编写跳转视图
在项目根目录新建views.py,编写跳转逻辑,用login_required装饰器校验用户登录状态:
from django.shortcuts import redirect from django.contrib.auth.decorators import login_required @login_required def home_redirect(request): # 获取当前登录用户的用户名,拼接路径跳转 return redirect(f'/{request.user.username}/')
3. 补充必要配置
在项目settings.py中配置登录跳转路径,未登录用户访问根路径时会自动跳转到登录页:
# 替换为你实际的登录页面路径 LOGIN_URL = '/admin/login/'
注意事项
- 路由配置要保证空路径规则在
<username>动态路由之前,避免被动态路由优先匹配导致跳转逻辑失效 - 你的
blog应用下的所有视图都需要接收username参数,建议在视图中增加校验逻辑,避免用户修改URL访问其他用户的专属页面:
# blog应用下的视图示例 def user_index(request, username): if username != request.user.username: return redirect('home_redirect') # 后续业务逻辑
内容的提问来源于stack exchange,提问作者tsmith41094
相关产品推荐
相关产品推荐

