web-dev-qa-db-ja.com

このユーザーが匿名であるか、実際にシステム上のユーザーであるかどうかを確認するにはどうすればよいですか?

def index(request):
    the_user = request.user

Djangoでは、実際のユーザーかどうかをどのように知ることができますか?私は試した:

if the_user:しかし、「AnonymousUser」は誰もログインしていない場合でも存在します。したがって、常にtrueを返し、これは機能しません。

60
TIMEX

request.user.is_anonymousTrueを返します。

101
Daniel DiPaolo

の代替

if user.is_anonymous():
    # user is anon user

ユーザーオブジェクトのIDが何であるかをテストして確認します。

if user.id == None:
    # user is anon user
else:
    # user is a real user

https://docs.djangoproject.com/en/dev/ref/contrib/auth/#anonymous-users を参照してください

13
leifos

ここで墓掘りを少ししていることは知っていますが、Google検索でこのページに移動しました。

ビューの定義でユーザーのログインが必要な場合は、@ login_requiredデコレーターを実装できます。

from Django.contrib.auth.decorators import login_required

@login_required
def my_view(request):
    …
4
Karl M.W.

Login_redirect_urlが送信されたページにあったことを除いて、同様の問題がありました。私はテンプレートに入れなければなりませんでした:

{% if user.is_authenticated %}
    Welcome Back, {{ username }}
{% endif %}
0
Harlin