python - 在 DRF 中获取序列化程序列表时出现 TypeError
问题描述
我正在使用 Django Rest 框架作为 API。当我向 API 发送 GET 请求以获取类别列表时,出现以下错误
回溯(最近一次通话最后): 文件“E:\env_django\lib\site-packages\django\core\handlers\exception.py”,第 34 行,在内部 响应 = get_response(请求) _get_response 中的文件“E:\env_django\lib\site-packages\django\core\handlers\base.py”,第 115 行 response = self.process_exception_by_middleware(e, request) _get_response 中的文件“E:\env_django\lib\site-packages\django\core\handlers\base.py”,第 113 行 响应 = Wrapped_callback(request, *callback_args, **callback_kwargs) 文件“E:\env_django\lib\site-packages\django\views\decorators\csrf.py”,第 54 行,位于 Wrapped_view 返回 view_func(*args, **kwargs) 文件“E:\env_django\lib\site-packages\rest_framework\viewsets.py”,第 114 行,在视图中 return self.dispatch(request, *args, **kwargs) 文件“E:\env_django\lib\site-packages\rest_framework\views.py”,第 505 行,在调度中 响应 = self.handle_exception(exc) 文件“E:\env_django\lib\site-packages\rest_framework\views.py”,第 465 行,在 handle_exception 中 self.raise_uncaught_exception(exc) 文件“E:\env_django\lib\site-packages\rest_framework\views.py”,第 476 行,在 raise_uncaught_exception 提高 exc 文件“E:\env_django\lib\site-packages\rest_framework\views.py”,第 493 行,在调度中 self.initial(请求,*args,**kwargs) 文件“E:\env_django\lib\site-packages\rest_framework\views.py”,第 411 行,初始 self.check_permissions(请求) 文件“E:\env_django\lib\site-packages\rest_framework\views.py”,第 331 行,在 check_permissions 在 self.get_permissions() 中获得许可: 文件“E:\env_django\lib\site-packages\rest_framework\views.py”,第 278 行,在 get_permissions return [permission() 获取 self.permission_classes 中的权限] TypeError:“类型”对象不可迭代
api/serializer.py
from rest_framework import serializers
from ..models import (
Category,
)
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = '__all__'
api/views.py
class CategoryListView(viewsets.ModelViewSet):
queryset = Category.objects.all()
serializer_class = CategorySerializer
permission_classes = BasePermissionMetaclass
def get_queryset(self):
queryset = Category.objects.all()
return queryset
def list(self, request, *args, **kwargs):
queryset = Category.objects.all()
serializer = CategorySerializer(queryset, read_only=True, many=True)
return Response(serializer.data)
api/views.py
from django.urls import path
from . import views
category = views.CategoryListView.as_view({
'get': 'list'
})
urlpatterns = [
path('api/v1/login', views.login),
path('api/v1/category', category)
]
我正在尝试任何方法,但我无法修复错误。帮我解决,谢谢。
解决方案
permission_classes
必须是可迭代对象。因此,在您看来,将其更改为
permission_classes = (BasePermissionMetaclass,)
推荐阅读
- tensorflow - 张量流如何计算`.linalg.eigh`的梯度?
- python - 我应该如何用“np.around”方法解决我的问题?
- asp.net - 有没有办法阻止 ASP.NET Core 应用程序发送任何电子邮件?
- .htaccess - 如何使用 .htaccess 忽略 URL 的路径
- java - 如果微调器值与第一个微调器项目不同,如何切换到 else 语句?
- vba - 尝试使用 Access vba 模块将 Access Column 与 MS Project Column 进行比较
- java - 使用 SQLite 从列表视图中删除项目
- ios - 在 AppDelegate 中推送时不显示新的 ViewController
- python - 如何获得 pandas 的前 n 个组?
- pandas - 为 pandas cumsum 定义一个非标准年期