2

現在ログインしているユーザーの情報を取得するビューを作成しようとしています。

私のビューは以下のように書かれており、URL でユーザーをビューに渡す限り、完全に正常に動作します。

def index(request, username, template="index.html"):

    user = get_object_or_404(User,
                             username__iexact=username)

     expression_qs = Expression.objects.all().order_by('-created')
     album_qs = Album.objects.all().filter(head__isnull=False, is_public=True).order_by('-created')

    user_following = user.relationships.following()

    following_expressions = positive_filter(expression_qs, user_following, 'user')
    following_albums = positive_filter(album_qs, user_following, 'user')
    following_feed = sorted(
        chain(following_albums, following_expressions),
        key=attrgetter('created'), reverse = True)

    return render(request, template, locals())

ただし、これはホームページのビューなので、URL は変更しないでください。ユーザーがログインしているかどうかのロジックを (テンプレートまたはビューで) 説明したいと思います (ログインしている場合はアクティビティ フィードを表示し、ログインしていない場合は単に静的ページを返します。形)。

私の質問は、現在のユーザーのクエリセットを返すように、(URL ではなく) request.user をビューに渡すにはどうすればよいですか?

4

3 に答える 3

3

URL経由で何かを渡す必要はありません。request.user からログインしているユーザーに直接アクセスできます。これについてはこちらで読むことができます。また、is_authentcated() メソッドまたは login_required デコレータを使用して、ユーザーがログインしているかどうかを確認できます。

def ur_view(request):
   #Check if the user is logged in
   if not request.user.is_authenticated():
          #your logic if user not logged in
   else:
        #If the user is logged in
于 2012-12-23T21:11:58.537 に答える
1

login_requiredデコレーターが必要です。

@login_required
def index(request, template="index.html"):
    user = request.user # get the currently logged in user

ユーザーがログインしている場合、アクティビティ フィードにアクセスできます。それ以外の場合は、ログイン ページにリダイレクトされます。これにより、認証されたユーザーのみがこれにアクセスできるようになりますview。また、を使用していつでも現在のユーザーにアクセスできますrequest.user

于 2012-12-23T21:10:22.173 に答える
0

ログインしたユーザー オブジェクトは、リクエスト オブジェクトにもあります。使用する:request.user

詳細については、django auth docsを参照してください。

于 2012-12-23T21:10:11.720 に答える