0

ログインした特定のユーザーのアクセスを1ページだけに制限する方法を知りたいです。

ユーザーモデルにあります

deactivated = models.BooleanField(default=False)

ユーザーがログインしていてアカウントが非アクティブ化されている場合は、非アクティブ化ページのみを表示したいと思います。アカウントを再度アクティブ化しない限り、Webサイトの他の場所に移動することを許可したくありません。それを実装するための最良かつ最も簡単な方法は何ですか?

編集:私が持っているすべてのビューを調べて、それにデコレータをアタッチする余裕はありません。

4

3 に答える 3

1

デコレータ アプローチを使用したくない場合、最善の策は、 がアクティブ化されているかどうかを確認するミドルウェアrequest.userを作成し、必要に応じて (できればアカウントを再アクティブ化できるページに) リダイレクトすることです。

おおよそ、次のようなものが必要です。

from django.shortcuts import redirect


class DeactivatedRedirectMiddleware(object):

    def process_request(self, request):
        if request.user and not request.user.is_anonymous():
            if request.user.deactivated and request.get_full_path() != '/some/url/':
                # redirect here
                return redirect('/some/url/')
        # ...
于 2012-10-23T09:29:21.713 に答える
0

デコレータ機能を使用して、ユーザーがアクティブ化されているかどうかを確認し、リダイレクトすることができます。 djangoでカスタムデコレータを作成するにはどうすればよいですか?

于 2012-10-23T09:08:45.977 に答える
0

ビュー デコレータを使用します。

それについての良い記事: http://passingcuriosity.com/2009/writing-view-decorators-for-django/

于 2012-10-23T09:10:26.473 に答える