启动Django2.0项目执行python3 manage.py runserver时遇TypeError报错
解决Django 2.0启动时
url_patterns不可迭代的异常 兄弟,这个报错我太熟了!本质就是Django在解析URL配置时,期望urlpatterns是一个可迭代的列表/元组,但你不小心把它赋值成了一个模块对象,导致遍历的时候直接报错。咱们一步步来搞定:
第一步:检查项目根目录的urls.py
这是最常见的出错点——很多人会犯这个低级错误:
- ❌ 错误写法(直接把
include()的结果赋值给urlpatterns):from django.urls import include urlpatterns = include('myapp.urls') # 这里直接返回的是模块,不是可迭代列表! - ✅ 正确写法(把
include()放进列表里):from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('myapp.urls')), # 必须包裹在列表里,保证可迭代 ]
第二步:检查应用内的urls.py
如果根目录的配置没问题,那就要看你自己的应用urls.py了:
- 确保应用的
urls.py里确实定义了urlpatterns,并且是一个列表/元组:from django.urls import path from . import views urlpatterns = [ path('', views.home, name='home'), # 其他URL规则... ] - 要是应用的
urls.py里没定义urlpatterns,或者写成了其他非可迭代的变量类型,也会触发同样的错误。
关于修复时触发的二次异常
如果你在改完上面的配置后又出现新异常,大概率是其他小问题:比如拼写错误(比如把urlpatterns写成url_patterns)、视图函数导入错误、路径参数写错等等。这时候别慌,盯着新的报错信息看,通常都会明确指出哪行代码有问题,顺着排查就行。
内容的提问来源于stack exchange,提问作者unsour
相关产品推荐
相关产品推荐

