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 に答える