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

如何在Django中限制已登录用户访问首页并跳转至专属页面(函数视图)

实现已登录用户跳转专属首页的函数视图方案

核心逻辑

在普通首页视图中判断用户登录状态:已登录用户直接重定向到专属首页,未登录/登出用户正常访问普通首页;专属首页仅对已登录用户开放。

代码实现

1. 普通首页视图(限制已登录用户访问)

from django.shortcuts import render, redirect

def home(request):
    # 检查用户是否已登录
    if request.user.is_authenticated:
        # 跳转到专属首页(需提前配置对应URL名称)
        return redirect('user_home')
    # 未登录用户返回普通首页模板
    return render(request, 'home.html')

2. 专属首页视图(仅允许已登录用户访问)

使用Django内置的login_required装饰器,自动拦截未登录用户:

from django.shortcuts import render
from django.contrib.auth.decorators import login_required

@login_required
def user_home(request):
    # 返回登录用户的专属首页模板
    return render(request, 'user_home.html')

3. 配置URL路由

在项目或应用的urls.py中添加对应路由:

from django.urls import path
from . import views

urlpatterns = [
    # 普通首页路由
    path('', views.home, name='home'),
    # 专属首页路由
    path('user-home/', views.user_home, name='user_home'),
]

关键说明

  • request.user.is_authenticated是Django内置的用户登录状态判断属性,无需额外配置
  • @login_required装饰器默认会将未登录用户重定向到/accounts/login/,可通过在settings.py中设置LOGIN_URL自定义跳转路径
  • 确保项目INSTALLED_APPS包含django.contrib.auth,且中间件列表中有django.contrib.auth.middleware.AuthenticationMiddleware(默认Django初始化项目已配置)

内容的提问来源于stack exchange,提问作者Md. Fahim Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:07:02