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配置项。例如:

python 复制代码
LOGIN_URL = '/custom_login/'

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

示例

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

1. views.py
python 复制代码
from django.shortcuts import render
from django.contrib.auth.decorators import login_required

@login_required
def post_new(request):
    # Your view logic here
    return render(request, 'post_new.html')
2. settings.py
python 复制代码
# Ensure you have the following setting
LOGIN_URL = '/custom_login/'
3. urls.py
python 复制代码
from django.urls import path
from . import views

urlpatterns = [
    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地址。

py 复制代码
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 here
    return render(request, 'post_new.html')
相关推荐
东风破1373 分钟前
DM8达梦共享存储集群DSC搭建步骤
数据库·学习·dm达梦数据库
雪碧聊技术22 分钟前
当数据库字段数大于Java实体类属性数时,MyBatis还能映射成功吗?一文详解
数据库·自动映射·mybatis映射机制·java实体类·宽容映射机制
Jetev24 分钟前
如何确定SQL字段是否为空_使用IS NULL与IS NOT NULL
jvm·数据库·python
m0_7020365344 分钟前
mysql如何处理不走索引的OR查询_使用UNION ALL优化重写
jvm·数据库·python
代钦塔拉1 小时前
Qt4 vs Qt5 带参数信号槽的连接方式详解
开发语言·数据库·qt
2401_846339561 小时前
MySQL在云环境如何选择存储类型_SSD与高性能云盘配置建议
jvm·数据库·python
zhaoyong2222 小时前
SQL如何统计每个用户的首次行为时间_MIN聚合与分组
jvm·数据库·python
2501_901006472 小时前
C#怎么实现配置热更新 C#如何在运行时动态刷新配置文件不需要重启程序【技巧】
jvm·数据库·python
m0_470857642 小时前
HTML怎么创建响应式图片备选方案_HTML srcset与sizes结构【详解】
jvm·数据库·python
lifewange3 小时前
PostgreSQL介绍
数据库·postgresql