Django REST framework 2示例无法运行:404页面未找到求助
解决Django REST Framework v2根路径404的问题
嘿,这个基础问题我碰到过好多次!你遇到的404本质就是根路径/没有配置对应的DRF路由规则,看错误信息里Django只尝试了^admin/的规则,就说明你的项目urls.py里压根没给根路径分配API视图。
问题根源
DRF的基础示例默认会让你把API路由挂载到根路径或者某个子路径,但你显然漏了这一步——当前只有后台管理的路由,访问根路径时Django找不到匹配的视图,自然返回404。
快速修复步骤
打开项目根目录的
urls.py(就是包含admin/路由的那个文件),检查是否有包含DRF路由的条目。根据你用的视图类型,添加对应的路由:
如果用的是
ViewSet+DefaultRouter(官方示例常用方式):from django.conf.urls import patterns, url, include from django.contrib import admin from rest_framework import routers from your_app_name import views # 替换成你的app名称 # 注册你的视图集 router = routers.DefaultRouter() router.register(r'snippets', views.SnippetViewSet) # 示例中的Snippet视图 urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)), # 关键:把DRF生成的路由挂载到根路径 url(r'^', include(router.urls)), )DefaultRouter会自动生成根路径的API入口页面,就是那个带所有API链接的DRF默认界面。如果用的是普通类视图/函数视图:
from django.conf.urls import patterns, url, include from django.contrib import admin from rest_framework.urlpatterns import format_suffix_patterns from your_app_name import views urlpatterns = patterns('', # 根路径指向DRF的api_root视图(或者你自己写的根视图) url(r'^$', views.api_root), # 其他API路由,比如示例中的snippets列表 url(r'^snippets/$', views.SnippetList.as_view()), url(r'^admin/', include(admin.site.urls)), ) # 可选:添加格式后缀支持,比如.json/.xml urlpatterns = format_suffix_patterns(urlpatterns)
重启开发服务器,再访问
http://127.0.0.1:8000/,就能看到预期的DRF API页面了!
额外提醒
别搞混了项目根urls.py和app里的urls.py——如果你的API路由是写在app的urls.py里,那要确保在项目根urls.py里用include把它挂载到根路径(比如url(r'^', include('your_app_name.urls')))。
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

