Django 2.x迁移至3.x时view必须为可调用对象的错误修复
Django 2.x 迁移至3.x:media URL配置错误修复
问题原因
Django 3.x 不再支持通过字符串路径(如'django.views.static.serve')指定视图函数,要求视图必须是可调用对象,这就是触发TypeError: view must be a callable or a list/tuple in the case of include()错误的原因。
修复步骤
- 导入视图函数
在你的urls文件顶部,添加导入语句:
from django.views.static import serve
- 修改URL配置
把原来的字符串视图路径替换为导入的serve函数:
urlpatterns += [ url(r'^media/(?P<path>.*)$', serve, { 'document_root': settings.MEDIA_ROOT, }), ]
可选:使用Django 3.x推荐的写法
url是re_path的别名,你也可以用更明确的re_path写法(效果完全一致):
from django.urls import re_path from django.views.static import serve urlpatterns += [ re_path(r'^media/(?P<path>.*)$', serve, { 'document_root': settings.MEDIA_ROOT, }), ]
内容的提问来源于stack exchange,提问作者manafak
相关产品推荐
相关产品推荐

