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

Django出现ValueError: invalid literal for int() with base 10: 'favicon.ico'错误求助

解决 ValueError: invalid literal for int() with base 10: 'favicon.ico' 问题

我一眼就看出问题出在你的URL路由配置上,咱们一步步拆解来解决:

为什么错误里会出现 favicon.ico?

浏览器加载任何网页时,都会自动向服务器请求根目录下的 favicon.ico 文件(用来显示标签页的小图标)。而你的路由里有一个通配符路由:

path('<str:pk>/', web.views.case_detail, name='case_detail'),

这个路由会匹配所有没有被前面路由捕获的请求——包括浏览器发送的 favicon.ico 请求。

错误的核心原因

你的 case_detail 视图应该是把 pk 当作整数来处理的(比如查询 DoxpopCase 模型时,用 pk=int(pk) 去匹配数据库主键),但收到的是字符串 'favicon.ico',自然就抛出了「无法将非数字字符串转成整数」的错误。

解决方案:调整路由的范围与优先级

最直接的修复方式是给案件详情路由加一个明确的前缀,同时限制参数类型,避免它捕获无关请求:

修改你的 urls.py,把案件详情的路由从 <str:pk>/ 改成带前缀的版本,并且指定 pk 为整数类型(更贴合你的模型主键类型):

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', web.views.home, name='home'),
    path('search/', web.views.search_results, name='search_results'),
    path('cases/', web.views.view_cases, name='view_cases'),
    # 关键修改:添加cases前缀,同时指定pk为int类型
    path('cases/<int:pk>/', web.views.case_detail, name='case_detail'),
    path('actor/edit/<int:pk>', web.views.actor_edit, name='actor_edit'),
    path('address/edit/<int:pk>', web.views.actor_address_edit, name='address_edit'),
    path('phone/edit/<int:pk>', web.views.actor_phone_edit, name='phone_edit'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

这样修改后:

  • 只有访问 cases/123/ 这种格式的路径才会触发 case_detail 视图,不会再捕获 favicon.ico 请求
  • <int:pk> 还能自动做类型校验,非整数的请求会直接返回404,避免后续视图里的类型转换错误

额外优化(可选)

如果想彻底解决favicon的请求问题,可以在项目的 static 目录下放置一个 favicon.ico 文件,浏览器就能正确获取到图标,不会再产生无效请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:23:40