如何在 django 中指定 login_required 重定向 url?

Posted

技术标签:

【中文标题】如何在 django 中指定 login_required 重定向 url?【英文标题】:How to specify the login_required redirect url in django? 【发布时间】:2011-04-04 11:31:46 【问题描述】:

我有一个视图函数:

@login_required
def myview():
    # do something
    # respond something
    pass

如何指定要重定向的视图函数的确切 URL?

【问题讨论】:

django 中有类似 logout_required 的东西吗? 【参考方案1】:

您的设置中的LOGIN_URL

参考:

LOGIN_URL LOGIN_REDIRECT_URL

【讨论】:

【参考方案2】:

你可以在你的视图中这样做对我来说很好,而无需在 settings.py 中声明

from django.contrib.auth.decorators import login_required

@login_required(login_url='/example url you want redirect/') #redirect when user is not logged in
def myview(request):
    do something
    return something #returns when user is logged in

【讨论】:

这是正确的并且运行良好,但总是更喜欢使用 LOGIN_URL,因为登录 url 将来会更改,您可能需要更改很多地方 最好使用 url 名称而不是路径,因为它可以随时更改。re_path(r"login$", LoginView.as_view(template_name="registration/login_form.html"), name="player_login") 然后装饰器是 @login_required(login_url="player_login") 当然它取代了设置中的 login_url 和 login_url_redirect。感谢分享。 如果您添加了从哪里导入login_required 会更好。【参考方案3】:

默认登录网址为:'/accounts/login/' 如果要更改它,请转到 settings.py

LOGIN_URL='/path/to/url'
LOGIN_REDIRECT_URL='/path/to/redirecturl'

【讨论】:

【参考方案4】:

文档中的这应该会有所帮助: https://docs.djangoproject.com/en/1.5/topics/auth/default/#the-login-required-decorator

@login_required(login_url='/accounts/login/')
def my_view(request):
    ...

【讨论】:

【参考方案5】:

转到你的setting.py 您可以在 settings.py 文件中的任何位置添加它,但我更喜欢将它放在底部。 LOGIN_URL = '/登录/'

注意:“/login/”是将用户带到登录页面的 URL 段。完整的 URL 类似于“myexample.com/login/”。

【讨论】:

【参考方案6】:

在 django 项目设置中

添加以下代码

LOGIN_REDIRECT_URL = 'path/to/url'

然后在您的视图中导入此 LOGIN_REDIRECT_URL 并添加

`@login_required(login_url=LOGIN_REDIRECT_URL)`

到您想要限制的视图顶部它会起作用

【讨论】:

【参考方案7】:

您也可以从视图中获取网址

例如

path('login/', login_view, name='login_name'),

然后装饰器将是

@login_required(login_url='login_name')

【讨论】:

以上是关于如何在 django 中指定 login_required 重定向 url?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 的设置文件中指定多个“init_command”

如何在 django 中指定 login_required 重定向 url?

DJANGO:当主键不是“id”时如何在夹具中指定主键

如何在 Django REST framework JWT 中指定我自己的数据值?

在运行时在 Django 中指定关系动词?

如何确保保存在数据库中的UTC日期等于Django中指定时区的午夜[重复]