如何在 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?