登出后回车访问dashboard页面,如何重定向至不带next参数的login页?
解决登录重定向时移除next参数的方法
以下是几种实现未登录访问/dashboard/时直接重定向到/login/(不带next参数)的方案,基于Django框架(从路径结构判断你使用的是Django):
一、自定义装饰器(函数视图适用)
默认的@login_required装饰器会自动添加next参数,我们可以自定义装饰器来取消这个行为:
from django.shortcuts import redirect from django.contrib.auth.decorators import user_passes_test def login_required_no_next(view_func): return user_passes_test( lambda u: u.is_authenticated, login_url='/login/', redirect_field_name=None # 设置为None,不再生成next参数 )(view_func)
在你的dashboard视图上替换默认装饰器:
@login_required_no_next def dashboard(request): # 你的视图逻辑 return render(request, 'dashboard.html')
二、类视图修改参数
如果使用类视图的LoginRequiredMixin,只需设置redirect_field_name为None即可:
from django.contrib.auth.mixins import LoginRequiredMixin from django.views.generic import TemplateView class DashboardView(LoginRequiredMixin, TemplateView): template_name = 'dashboard.html' login_url = '/login/' redirect_field_name = None # 移除next参数
三、全局配置(谨慎使用)
若想让所有登录重定向都不带next参数,可以在settings.py中添加配置:
LOGIN_URL = '/login/' REDIRECT_FIELD_NAME = None
注意:该配置会影响所有使用默认登录校验的视图,若部分视图需要保留next参数,不建议使用此方法。
内容的提问来源于stack exchange,提问作者abu abu
相关产品推荐
相关产品推荐

