欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > django @login_required 为什么会自动重定向到/accounts/login/?next=/myblog/post/new/

django @login_required 为什么会自动重定向到/accounts/login/?next=/myblog/post/new/

2024/10/25 14:21:56 来源:https://blog.csdn.net/u010674101/article/details/140045413  浏览:    关键词:django @login_required 为什么会自动重定向到/accounts/login/?next=/myblog/post/new/

在Django中,@login_required 装饰器用于确保用户在访问某个视图时已经登录。如果用户未登录,那么Django会自动重定向用户到登录页面。默认情况下,Django使用/accounts/login/作为登录URL。如果用户试图访问一个需要登录的视图,比如/myblog/post/new/,但未登录,Django会将用户重定向到/accounts/login/?next=/myblog/post/new/

这里的 next 参数告诉登录视图,在用户成功登录后,应将其重定向回到他们最初试图访问的页面。

如果你想自定义登录URL,可以在Django的设置文件settings.py中更改LOGIN_URL配置项。例如:

LOGIN_URL = '/custom_login/'

这样,当未登录用户试图访问需要登录的视图时,他们会被重定向到/custom_login/而不是默认的/accounts/login/

示例

展示如何使用@login_required以及如何自定义登录URL:

1. views.py
from django.shortcuts import render
from django.contrib.auth.decorators import login_required@login_required
def post_new(request):# Your view logic herereturn render(request, 'post_new.html')
2. settings.py
# Ensure you have the following setting
LOGIN_URL = '/custom_login/'
3. urls.py
from django.urls import path
from . import viewsurlpatterns = [path('myblog/post/new/', views.post_new, name='post_new'),path('custom_login/', views.custom_login_view, name='custom_login'),
]

通过这些设置,未登录用户在访问/myblog/post/new/时,将会被重定向到/custom_login/?next=/myblog/post/new/

局部指定

直接在view装饰器指定url地址。

from django.shortcuts import render
from django.contrib.auth.decorators import login_required@login_required(login_url='/custom_login/login')
def post_new(request):# Your view logic herereturn render(request, 'post_new.html')

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com