Django报错TypeError: view必须是可调用对象或include所需的列表/元组
解决Django TypeError报错及相关疑问
先排查你的报错原因
你遇到的TypeError: view must be a callable or a list/tuple in the case of include(),结合你的根urls.py,大概率是以下问题:
- 检查
webarticles/urls.py是否正确定义了urlpatterns列表,比如是否为空,或者格式错误(未将路径放入列表)。正确示例如下:
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]
- 确认
webarticles应用已在项目settings.py的INSTALLED_APPS中注册,需添加一行'webarticles',,否则Django无法找到该应用的路由配置。 - 若你使用较老的Django版本(2.x之前),需确认
include用法是否匹配,但从你使用path来看,此可能性较低。
解答你的两个疑问
1. 为什么有的方案使用url而非path?
url是Django 1.x的路由写法,在2.x及之后版本被重命名为re_path,作用是匹配正则表达式格式的路径;而path专门用于匹配普通非正则路径,仅支持用尖括号<>定义的路径转换器(如<int:pk>)。
所以出现url的方案,要么是基于旧版本Django的教程,要么是场景需要用正则表达式匹配复杂路径(如带日期、多段可变的路径)。
2. 项目与应用处于同一层级时,如何导入webarticles?
- 路由中的
include('webarticles.urls'):只要将webarticles加入settings.py的INSTALLED_APPS,Django会自动在Python路径中找到该应用的urls.py,无需额外处理导入。 - 导入应用内的模块(如views、models):直接使用
from webarticles import views或import webarticles.models即可,因为项目根目录默认在Python的sys.path中,同一层级的应用可直接被导入。
内容的提问来源于stack exchange,提问作者Gaurav Varma
相关产品推荐
相关产品推荐

