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

Django集成Scrapy运行runserver报list无startswith属性错误

问题现象

Scrapy爬虫与Django框架集成开发完成后,执行runserver命令启动服务时抛出异常,错误栈最终定位到Django内部_add_script_prefix方法,执行value.startswith(("http://", "https://", "/"))逻辑时抛出如下错误:

AttributeError: 'list' object has no attribute 'startswith'

排查过程
  • 最初误判错误来自Django框架本身,先后排查Cruises模型定义、views视图逻辑、urls路由配置、basic.html模板代码,尝试删除所有迁移文件、移除db.sqlite3重置数据库,均未解决问题。
  • 后续排查确认异常与settings.py静态资源配置相关:原有配置MEDIA_ROOT = os.path.join(BASE_DIR, 'media')用于指定媒体文件存储路径,根urls.py中通过static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)挂载媒体路由,这套配置逻辑在其他Scrapy+Django集成项目中可正常运行,本次却触发异常。
根因及修复方案

错误根因:配置失误,将MEDIA_URL误写为空列表[],不符合该配置项要求的字符串格式,导致Django处理路由前缀时拿到列表类型值调用字符串专属的startswith方法触发类型错误。
修复操作:将MEDIA_URL配置修正为正确的字符串格式'/media/',重启服务后异常完全消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:09:26