【问题标题】:cannot access static files in Django无法访问 Django 中的静态文件
【发布时间】:2026-01-22 10:05:02
【问题描述】:

我正在为 Django 中的静态文件而苦苦挣扎。

我的项目结构如下:

搜索(里面有manage.py的根文件夹)

.....搜索(项目文件夹有settings.py、urls.py等)

...........模板(内有 HTML 模板)

...........static(里面有css之类的静态文件)

HTML 模板内容

{% load staticfiles %}
< link rel="stylesheet" type="text/css" href="{% static 'search.css' %}"/>

**url.py content**


**from** django.contrib.staticfiles.urls **import** staticfiles_urlpatterns

urlpatterns += staticfiles_urlpatterns()

**settings.py content**

import os.path

SITE_ROOT = os.path.dirname(os.path.realpath(__file__))

STATIC_ROOT = '/home/aga/Auctions/search/search/'

STATIC_URL = '/static/'

STATICFILES_DIRS = ((os.path.join(SITE_ROOT,'/static/'),)

此配置中哪个设置有误?

【问题讨论】:

  • 你只有在静态文件夹中。试试这个方法。你不必写 staticfiles_dirs STATIC_ROOT='/home/aga/Auctions/search/search/static/'
  • 你需要运行 collectstatic 吗?
  • @Sawan:我知道您建议删除此 STATIC_ROOT 设置?我删除了它,但浏览器仍然不使用 CSS:/
  • 你必须保留 STATIC_ROOT。我建议按照先前评论中的说明更改 static_root。
  • 看看这可能会解决 *.com/a/65402431/13249628

标签: python css django static-files


【解决方案1】:

在settings.py中

STATIC_URL = "/static/"
STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static_cdn')

现在在您的项目应用程序中创建一个名为 static 的文件夹并运行 collectstatic 命令。然后您可以在静态文件夹中创建自己的静态文件并在模板中使用。

【讨论】:

    【解决方案2】:

    建议你到这里看清楚流程Managing static files

    在urls.py中正确的格式应该是

    from django.conf.urls.static import staticfiles_urlpatterns
    

    【讨论】: