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

Django 2.0报错:View必须是可调用对象或include()的列表/元组

解决Django 2.0中的TypeError: View must be a callable or a list/tuple...问题

嘿,我来帮你搞定这个报错!你遇到的这个TypeError主要是两处代码错误导致的,咱们一步步来修正:

1. 应用URL(catalog/urls.py)的导入与视图函数不匹配

你当前的应用URL里犯了两个小错误:

  • 导入错误:你写的from django import views是导入Django自带的系统视图模块,但你的index、show_category这些视图函数是自己在catalog/views.py里定义的,根本不在这个模块里!
  • 函数名不匹配:URL里写的views.catalog_home,但你视图文件里定义的函数名叫index,完全对应不上!

修改后的catalog/urls.py应该是这样:

from django.urls import path
# 从当前应用导入自定义视图(两种写法都可以)
from . import views
# 或者 from catalog import views

urlpatterns = [
    # 这里改成views.index,和你视图里的函数名对应
    path('index/', views.index, name='catalog_home'),
    path('category/<category_slug>/', views.show_category, name='show_category'),
    path('product/<product_slug>/', views.show_product, name='show_product')
]

2. 项目URL里的静态文件配置错误

你项目URL里的静态文件路径配置有两个问题:

  • 你把static模块当成了可调用的视图函数传入,但实际上应该用static.serve这个具体的视图函数;
  • 路径匹配规则不对,应该用static/<path:path>来匹配静态文件的具体路径,不然Django找不到对应的文件。

另外,硬编码静态文件路径不是好习惯,建议用Django配置里的STATIC_ROOT来替代。修改后的项目URL如下:

from django.contrib import admin
from django.urls import path, include
from django.views.static import serve
from django.conf import settings

urlpatterns = [
    path('admin/', admin.site.urls),
    path('catalog/', include('catalog.urls')),
    # 开发环境下的静态文件服务配置(生产环境请用Nginx等外部服务托管静态文件)
    path('static/<path:path>', serve, {
        'document_root': settings.STATIC_ROOT,
    }),
]

# 更推荐的写法是用Django自带的static辅助函数:
# from django.conf.urls.static import static
# urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

最后验证

把这两处修改完之后,重启你的Django开发服务器,应该就能解决这个TypeError了。本质上这个报错就是告诉我们:你配置的URL对应的不是一个可调用的视图函数,要么是导入错了,要么是传了模块而非具体函数,咱们上面的修改正好解决了这两个问题。

内容的提问来源于stack exchange,提问作者Raphael

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:13:51