Django REST Framework报错:'AgencyRegistration'对象无'get'属性
解决Django REST Framework中
AttributeError: 'AgencyRegistration' object has no attribute 'get'的问题 我看到你遇到的这个错误,根源其实在两个地方——URL配置错误和视图返回值错误,咱们一步步来修复:
1. 修复URL配置错误
你在urls.py里把模型类AgencyRegistration直接传给了path,但Django的URL路由需要的是视图函数或者类视图的实例,不是模型类本身。把它改成你定义的视图函数agency_registration:
urlpatterns = [ path('agency-registration/', views.agency_registration), ]
2. 修复视图的返回值错误
你的views.py里用render()包裹了JsonResponse,这是多余的。render是用来返回HTML模板的,而你要返回JSON数据,直接返回JsonResponse就行:
def agency_registration(request): agency_data = AgencyRegistration.objects.all() serializer = AgencyRegistrationSerializer(agency_data, many=True) return JsonResponse(serializer.data, safe=False)
额外建议:改用DRF的APIView或者ViewSet(可选)
既然你在用Django REST Framework,其实更推荐用DRF提供的视图类,比如APIView或者ReadOnlyModelViewSet,这样能更贴合DRF的生态,也能自动处理请求方法、序列化等细节:
比如改成APIView的写法:
views.py
from rest_framework.views import APIView from rest_framework.response import Response class AgencyRegistrationView(APIView): def get(self, request): agency_data = AgencyRegistration.objects.all() serializer = AgencyRegistrationSerializer(agency_data, many=True) return Response(serializer.data)
urls.py
urlpatterns = [ path('agency-registration/', views.AgencyRegistrationView.as_view()), ]
这种写法会自动处理请求头、状态码等,比普通函数视图更专业~
内容的提问来源于stack exchange,提问作者Ricardo Maldonado
相关产品推荐
相关产品推荐

