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

使用@login_required时出现404错误:找不到/accounts/login/页面

问题原因

@login_required 装饰器默认会将未登录用户重定向到 /accounts/login/,但你的项目中登录路径配置的是 /login/,系统找不到默认路径,因此返回404错误。

解决方法

方法一:给装饰器指定登录URL

直接在 @login_required 中显式设置登录路径,覆盖默认值:

修改 views.py 中的视图函数:

@login_required(login_url='/login/')
def transactions(request):
    user_transactions = Transactions.objects.filter(transaction_medium = request.user)
    return render(request,'transactions.html',{'user_transactions':user_transactions})

方法二:全局配置登录URL(推荐)

如果多个视图都需要登录验证,在项目的 settings.py 中添加全局配置,一次性修改所有 @login_required 的跳转目标:

在 settings.py 文件末尾添加:

LOGIN_URL = '/login/'
补充:登录后跳转回原页面

确保登录视图处理完登录逻辑后,能通过 next 参数跳转回用户原本要访问的页面。示例代码如下:

from django.contrib.auth import authenticate, login
from django.shortcuts import redirect, render

def login(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(request, username=username, password=password)
        
        if user is not None:
            login(request, user)
            # 获取跳转目标,默认跳转到首页
            next_page = request.GET.get('next', '/')
            return redirect(next_page)
        # 登录失败的处理,返回错误提示
        return render(request, 'login.html', {'error': '用户名或密码错误'})
    
    return render(request, 'login.html')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 08:33:17