Django访问/api/lead/报错:module object is not callable
解决Django中/api/lead/访问报错“module object is not callable”的问题
问题根源
你遇到的错误核心是模块导入逻辑错误+文件结构不符合Django/DRF常规约定,具体问题点如下:
- 视图类未放在标准
views.py中,URL配置里的导入路径完全错误 - 序列化器导入时只导入了模块文件,而非里面的类,导致赋值给
serializer_class的是模块而非可调用的类 - 自定义命名的视图/序列化器文件,增加了导入混乱的概率
修复步骤
1. 调整文件结构(遵循Django/DRF惯例)
- 新建
api/views.py,将LeadListCreate.py里的代码全部移进去 - 新建
api/serializers.py,将LeadSerializer.py里的代码全部移进去
2. 修正视图文件的导入语句
修改api/views.py:
from .models import Lead from .serializers import LeadSerializer # 导入同目录serializers模块里的类 from rest_framework import generics class LeadListCreate(generics.ListCreateAPIView): queryset = Lead.objects.all() serializer_class = LeadSerializer
3. 修正URL配置
修改api/urls.py,直接导入正确的视图类:
from django.urls import path from .views import LeadListCreate urlpatterns = [ path('lead/', LeadListCreate.as_view()), ]
如果要保证最终访问路径是/api/lead/,调整项目根目录的DjangoApp/urls.py:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('api.urls')), # 将api子应用的URL挂载到/api/路径下 ]
4. 验证修复
重启Django开发服务器,访问http://localhost:8000/api/lead/,即可正常访问列表和创建接口。
内容的提问来源于stack exchange,提问作者James Davidson
相关产品推荐
相关产品推荐

