需要在Django Rest框架中使用AnonymousUser登录

我有一个viewset API,它获取通过Django JWT进行身份验证的用户通知,但出现错误。请看一下!需要在Django Rest框架中使用AnonymousUser登录

视图集:

from api.notifications.models import Notification 

from rest_framework.generics import (ListAPIView)

from api.notifications.serializers import (NotificationListSerializer)

from api.pagination import NewFeedPagination

from rest_framework.permissions import AllowAny

from api.permissions import IsOwnerOrReadOnly

class NotificationListAPIView(ListAPIView):

permission_classes = [AllowAny]

serializer_class = NotificationListSerializer

ordering_fields = 'date'

def get_queryset(self, *args, **kwargs):

queryset_list = Notification.objects.filter(to_user=self.request.user)

return queryset_list

当登录和访问的URL,它的全成。但它没有登录,它出现错误:int() argument must be a string or a number, not 'AnonymousUser'。我如何设置AnonymousUser,URL会进入登录页面:localhost:8000/admin?

所有回溯错误: 回溯:

File "C:\Python27\lib\site-packages\django\core\handlers\exception.py" in inner 

41. response = get_response(request)

File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response

187. response = self.process_exception_by_middleware(e, request)

File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response

185. response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "C:\Python27\lib\site-packages\django\views\decorators\csrf.py" in wrapped_view

58. return view_func(*args, **kwargs)

File "C:\Python27\lib\site-packages\django\views\generic\base.py" in view

68. return self.dispatch(request, *args, **kwargs)

File "C:\Python27\lib\site-packages\rest_framework\views.py" in dispatch

489. response = self.handle_exception(exc)

File "C:\Python27\lib\site-packages\rest_framework\views.py" in handle_exception

449. self.raise_uncaught_exception(exc)

File "C:\Python27\lib\site-packages\rest_framework\views.py" in dispatch

486. response = handler(request, *args, **kwargs)

File "C:\Python27\lib\site-packages\rest_framework\generics.py" in get

201. return self.list(request, *args, **kwargs)

File "C:\Python27\lib\site-packages\rest_framework\mixins.py" in list

40. queryset = self.filter_queryset(self.get_queryset())

File "C:\Users\User\Desktop\FeedGit\backend\api\notifications\views.py" in get_queryset

16. queryset_list = Notification.objects.filter(to_user=self.request.user)

File "C:\Python27\lib\site-packages\django\db\models\manager.py" in manager_method

85. return getattr(self.get_queryset(), name)(*args, **kwargs)

File "C:\Python27\lib\site-packages\django\db\models\query.py" in filter

782. return self._filter_or_exclude(False, *args, **kwargs)

File "C:\Python27\lib\site-packages\django\db\models\query.py" in _filter_or_exclude

800. clone.query.add_q(Q(*args, **kwargs))

File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in add_q

1261. clause, _ = self._add_q(q_object, self.used_aliases)

File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in _add_q

1287. allow_joins=allow_joins, split_subq=split_subq,

File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in build_filter

1217. condition = lookup_class(lhs, value)

File "C:\Python27\lib\site-packages\django\db\models\lookups.py" in __init__

24. self.rhs = self.get_prep_lookup()

File "C:\Python27\lib\site-packages\django\db\models\fields\related_lookups.py" in get_prep_lookup

112. self.rhs = target_field.get_prep_value(self.rhs)

File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py" in get_prep_value

962. return int(value)

Exception Type: TypeError at /api/v1/notifications/

Exception Value: int() argument must be a string or a number, not 'AnonymousUser'

回答:

为你的错误说:

Exception Value: int() argument must be a string or a number, not 'AnonymousUser' 

这意味着过滤Notification你逝去的完整的用户对象,而不是通过ID只有这么:

更改此行,这将工作

16.   queryset_list = Notification.objects.filter(to_user=self.request.user.id) 

以上是 需要在Django Rest框架中使用AnonymousUser登录 的全部内容, 来源链接: utcz.com/qa/263032.html

回到顶部