You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django REST framework 2示例无法运行:404页面未找到求助

解决Django REST Framework v2根路径404的问题

嘿,这个基础问题我碰到过好多次!你遇到的404本质就是根路径/没有配置对应的DRF路由规则,看错误信息里Django只尝试了^admin/的规则,就说明你的项目urls.py里压根没给根路径分配API视图。

问题根源

DRF的基础示例默认会让你把API路由挂载到根路径或者某个子路径,但你显然漏了这一步——当前只有后台管理的路由,访问根路径时Django找不到匹配的视图,自然返回404。

快速修复步骤

  1. 打开项目根目录的urls.py(就是包含admin/路由的那个文件),检查是否有包含DRF路由的条目。

  2. 根据你用的视图类型,添加对应的路由:

    • 如果用的是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)
      
  3. 重启开发服务器,再访问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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:24:55