2017-08-06 8 views
0

私のAPIにアクセスするための認証を実施しようとしていますが、permission_classes = permissions.IsAuthenticated,)という属性がViewSetのものではないようです。私はget_queryset()にするときに、後でユーザーのプロフィールにアクセスしようとするので、私のようなエラーを取得しています:私はまた、認証は、私のrest_framework設定で設定したDjango Rest Frameworkで認証要件を実施できません

TypeError: 'AnonymousUser' object is not iterable"

'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',), 

そして私はまたに追加ユーザープロファイルに他のビジネス・ロジックのチェックを行う前に、私の発送方法:

def dispatch(self, request, *args, **kwargs): 
    if not request.user.is_authenticated: 
     return Response(status=status.HTTP_401_UNAUTHORIZED) 

のいずれかに動作していないです:

File "/lib/python3.5/site-packages/rest_framework/response.py", line 57, in rendered_content assert renderer, ".accepted_renderer not set on Response" AssertionError: .accepted_renderer not set on Response

なぜこれらの認証制御は機能しませんか?

編集:

kwargs = {} 
for k,v in self.request.query_params.items(): 
    if not validate_that_key_is_an_actual_model_field(k): 
     return Response(status=status.HTTP_400_BAD_REQUEST) 
    kwargs[k] = v 
return Product.objects.filter(fk_client=self.client)\ 
    .filter(**kwargs)\ 
    .order_by('uuid')\ 
    .select_related('fk_user') 
+0

ビューを表示できますか? – zaidfazil

+0

それは数百行です。どの部分が必要ですか? – Escher

+0

少なくともあなたの 'get_queryset()'メソッドは? – zaidfazil

答えて

0

それは私が呼ばれたスーパークラスのdispatch前に実行されたdispatch()でいくつか他のことをやって、それゆえ前に、ユーザーのプロファイルにアクセスして判明:ここget_queryset()の簡易版ですHttp401はスーパークラスによって返される可能性があります。さらに、スーパークラスのディスパッチはまだ呼び出されていないため、レンダラーは(要求のコンテンツヘッダーによって)適切に初期化されていないため、AssertionError: accepted_renderer not set on Responseのソースとなりました。

関連する問題