Django REST Framework 404页面未找到问题求助
Django REST Framework 404错误排查与解决方案
问题描述
首次使用Django REST Framework,访问目标URL时出现Error 404 Page not found错误,首页能识别该URL,但实际访问仍报错。已在settings.py中添加应用,完成serializer.py序列化器编写,尝试过Stack Overflow相关方案但无效。
项目结构
lesite/ |--urls.py | |--recup_fichier_api/ | |---urls.py |---views.py
代码问题分析与修复
你的recup_fichier_api/urls.py存在多处关键错误,这是导致404的核心原因:
1. 子路由配置错误
当前recup_fichier_api/urls.py代码:
urlpatterns = [ ] router = routers.DefaultRouter router.register = ('table_config', table_configVisewset )
错误点:
DefaultRouter未实例化,需加括号()创建对象router.register是方法调用,不是赋值操作,不能用=- 未将路由器生成的URL添加到
urlpatterns中
修复后的recup_fichier_api/urls.py:
from django.urls import path, include from rest_framework import routers from .views import table_configVisewset router = routers.DefaultRouter() router.register('table_config', table_configVisewset) urlpatterns = [ path('', include(router.urls)), ]
2. 主路由冗余问题
lesite/urls.py中同时配置了path('table_config/', include('recup_fichier_api.urls')),而子路由里又注册了table_config前缀,会导致最终URL变成/table_config/table_config/,不符合预期。
调整方案二选一:
- 若希望访问URL为
/table_config/,修改主路由为:
path('', include('recup_fichier_api.urls'))
- 或保持主路由的
table_config/前缀,子路由中注册时去掉同名前缀:
# recup_fichier_api/urls.py router.register('', table_configVisewset)
3. 其他潜在问题排查
- 确认
settings.py中已添加rest_framework和recup_fichier_api到INSTALLED_APPS:
INSTALLED_APPS = [ # ... 其他应用 'rest_framework', 'recup_fichier_api', ]
- 检查
table_config模型是否存在,且queryset = table_config.objects.all()能正常返回数据 - 确认
config_serializer序列化器已正确导入到views.py中
内容的提问来源于stack exchange,提问作者louan
相关产品推荐
相关产品推荐

