2

動作しているように見える raise_exception パラメータはありません。

@login_required
def hi (request):
  return HttpResponse("hello")

これを AJAX JavaScript から呼び出す必要があるため、リダイレクトは必要ありません。ステータス コード 403 だけで十分です。

4

1 に答える 1

3

ビュー自体にチェックを入れるだけです...

def hi(request):
    if request.user.is_authenticated():
      # Allow access.
    else:
        raise MyException()

...または、同様のロジックを適用する独自のデコレータを使用します。

編集:サンプルデコレータが追加されました。

from django.http.response import HttpResponseForbidden
from django.utils.decorators import available_attrs
from functools import wraps

def alt_login_required(function=None):
    def decorator(view_func):
        def _wrapped_view(request, *args, **kwargs):
            if request.user.is_authenticated():
                return view_func(request, *args, **kwargs)
            else:
                return HttpResponseForbidden()

        return wraps(view_func, assigned=available_attrs(view_func))(_wrapped_view)
    if function is None:
        return decorator
    else:
        return decorator(function)
于 2013-08-20T22:44:51.830 に答える