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

使用Slug展示博客详情时静态URL失效问题求助

问题修复方案

核心原因

你在博客详情页里用了相对路径引用静态资源(比如media/assets/css/bootstrap.min.css),当页面URL是/blog/this-is-testing-number-1/时,浏览器会把当前URL的路径作为基准,把资源路径拼接成/blog/this-is-testing-number-1/media/...,而不是从根目录开始的/media/...。

具体修复步骤

1. 快速修正HTML资源路径

把所有资源路径的开头加上/,改成绝对路径,让浏览器直接从网站根目录查找资源:

<!-- CSS
================================================== -->
<link rel="stylesheet" href="/media/assets/css/bootstrap.min.css" />
<link rel="stylesheet" href="/media/assets/css/magnific-popup.css" />
<link rel="stylesheet" href="/media/assets/css/owl.carousel.min.css" />
<link rel="stylesheet" href="/media/assets/css/simple-scrollbar.css" />
<link rel="stylesheet" href="/media/assets/css/fontawesome.all.min.css" />
<link rel="stylesheet" href="/media/assets/css/style.css" />

<script src="/media/assets/js/modernizr.min.js"></script>

2. 规范方案:使用Django模板标签

Django提供了专门的模板标签来管理静态资源,避免路径错误:

  • 首先在模板顶部加载标签:
{% load static %}
  • 然后用{% get_media_prefix %}标签拼接媒体资源路径(适合用户上传的内容):
<!-- CSS
================================================== -->
<link rel="stylesheet" href="{% get_media_prefix %}assets/css/bootstrap.min.css" />
<link rel="stylesheet" href="{% get_media_prefix %}assets/css/magnific-popup.css" />
<!-- 其他资源同理修改 -->

<script src="{% get_media_prefix %}assets/js/modernizr.min.js"></script>

如果这些资源是项目自带的静态文件(非用户上传),建议放到static目录,改用{% static %}标签:

<link rel="stylesheet" href="{% static 'assets/css/bootstrap.min.css' %}" />

3. 修正settings.py中的配置错误

你的配置里有两处语法/命名错误:

  • MEDIA_URL缺少闭合引号:
# 原错误代码
MEDIA_URL = '/media/

# 修正后
MEDIA_URL = '/media/'
  • STATICFILES_DIR应为复数STATICFILES_DIRS,否则Django无法识别:
STATICFILES_DIRS = [
    os.path.join(BASE_DIR , "public/static")
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:07:11