我正在为登录页面使用自定义URL。然而,Django的@login_required
装饰师将我带到accounts/login
。
我看到这个装饰器的第3个参数是你未登录时所使用的URL。现在我想将urls.py中的值传递给这个装饰器:
@login_required(login_url=myapp.urls.my_url_name)
显然这不起作用,但有一些替代语法让我实现这一目标吗?或者,是否有一个全局变量,我只能设置一次,并覆盖login_url
参数?
答案 0 :(得分:1)
您可以通过在LOGIN_URL
全局设置settings.py
来指定未登录的用户将被重定向到的用户名。 (当然,如果你愿意,也可以在应用装饰器的地方覆盖那个设置。)
根据文档,您还可以指定命名网址格式,例如LOGIN_URL = 'myapp:login'
,并查看函数名称,例如LOGIN_URL = 'myapp.login_view'
。
来自the docs:
<强> LOGIN_URL 强>
默认值:
'/accounts/login/'
重定向请求以进行登录的URL,尤其是在使用
login_required()
装饰器时。此设置还接受视图函数名称和命名的URL模式,这些模式可用于减少配置重复,因为您不必在两个位置(设置和URLconf)定义URL。
供参考:
答案 1 :(得分:0)
您可以在settings.py文件中将站点的登录URL设置为LOGIN_URL。然后,你不必担心在不同的地方改变它。