0

我对 Django 很陌生。在我的网站上,我试图做这样的事情

#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

或者,如果您认为这样做是一种不好的做法,请给我一些想法如何以另一种方式做到这一点。可能我必须以某种方式更改 urls.py。

谢谢你。

4

1 回答 1

1

@login_required应该在整个功能上使用(更具体地说,一个控制器)。你的第一个代码块是做你想做的事情的正确方法(除了错误的缩进)。

@login_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_something只有在用户通过身份验证时才会运行。然而,过多的安全并不是邪恶的。

于 2012-07-11T20:02:23.673 回答