@Django中函数内部需要登录\u
我对Django很陌生。在我的网站上,我试图做这样的事情@Django中函数内部需要登录\u,django,login-required,Django,Login Required,我对Django很陌生。在我的网站上,我试图做这样的事情 #views.py def index(request): .... if request.user.is_authenticated: #do something else #something else 所以我的想法是从数据库中获取一些信息,在用户登录时显示这些信息。 我想知道,有没有办法做到这一点: #views.py def index(request): .... @login_required
#views.py
def index(request):
....
if request.user.is_authenticated:
#do something
else
#something else
所以我的想法是从数据库中获取一些信息,在用户登录时显示这些信息。
我想知道,有没有办法做到这一点:
#views.py
def index(request):
....
@login_required
#do something
....
#do something else for everybody
或者,如果你认为这样做是一种不好的做法,请告诉我如何用另一种方式来做。也许我不得不改变URL.py
谢谢。
@login\u required
应用于整个功能(更具体地说是控制器)。您的第一个代码块是执行您想要的操作的正确方法(除了错误的缩进)
您可以使用@login\u required
装饰器创建单独的功能:
@login_required
def do_something(request):
pass
def do_something_else(request):
pass
def index(request):
if request.user.is_authenticated:
do_something(request)
else
do_something_else(request)
但是在这种情况下,这个装饰器是不必要的,因为只有在用户经过身份验证的情况下,
do\u something
才会运行。然而,太多的安全并不是坏事。谢谢你的回答。但是我可以做一些事情,比如创建一个单独的函数,它将被包装在@login\u required中,然后放入另一个函数中,如果是,我如何调用这个函数?请注意,如果login\u required
在user.is\u authenticated()
为False时失败,它将返回重定向到\u login(路径、登录\u url、重定向\u字段\u名称)
,但这里不考虑这一点。而且计算某些内容但不使用它会有一点开销…实际上,@login\u required
进行的唯一检查是u.是否经过身份验证()。。