【问题标题】:Why static files are not loading? | Django为什么没有加载静态文件? |姜戈
【发布时间】:2021-11-12 22:20:25
【问题描述】:

我正在尝试加载静态文件,但它显示以下错误:

GET http://127.0.0.1:8000/static/css/user/style.css net::ERR_ABORTED 404 (Not Found) - home:25
GET http://127.0.0.1:8000/static/css/user/style.css 404 (Not Found) - home:25
GET http://127.0.0.1:8000/static/img/logo.png 404 (Not Found) - home:149
GET http://127.0.0.1:8000/static/img/logo.png 404 (Not Found) - home:1

我的密码:

-管理员

settings.py

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")

urls.py

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('Welcome.urls')),
    path('auth/', include('Authentication.urls')),
    path('ad/', include('Ads.urls')),
    path('user/', include('UserDashboard.urls')),
    path('admin/', include('AdminDashboard.urls')),
]

if settings.DEBUG:
    urlpatterns = urlpatterns + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
    urlpatterns = urlpatterns + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
  • 应用程序

模板

<link href="{% static 'css/user/style.css' %}" rel="stylesheet">

目录结构

代码说明

  • 只需在根目录中添加静态文件并尝试在模板中导入它们,但未加载 css 文件
  • 但是有些媒体文件像这个媒体&lt;link rel="shortcut icon" type="image/jpg" href="{% static 'img/logo.png' %}" /&gt;一样加载成功。
  • 同样在 dir 结构中,我们可以看到 img 和 css 文件夹在 static 文件夹中的同一位置,并且从 image 文件夹中加载图像,但从 css 文件夹中加载 css。

【问题讨论】:

  • 您记得在模板中{% load static %} 吗?

标签: python python-3.x django django-staticfiles django-static


【解决方案1】:

Settings.py

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

urls.py

+static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

在 urlpatterns 的右括号之后添加这些。

触发这个命令 python manage.py collectstatic

在所有这些设置之前,在您的项目文件夹中创建一个静态文件夹。希望这对你有用

【讨论】:

  • 照你说的做了,但没有任何改变。
  • &lt;link href="{% static 'css/user/style.css'%}" rel="stylesheet"&gt;试试这些。因为看起来你给了一个空间。您可以在浏览器 Network > CSS 中检查您的 style.css 是否为 200 或其他错误。
  • 试过了,但结果一样。
  • 好的。您的项目中是否创建了两个静态文件夹?如果是,则在浏览器中查看是否能够获取 style.css,是否显示 200 或 404 错误。
【解决方案2】:

STATICFILES_DIRS = [BASE_DIR / '资产']

STATIC_URL = '/static/'

STATIC_ROOT = BASE_DIR / '静态'

MEDIA_URL = '/media/'

MEDIA_ROOT = BASE_DIR / '媒体'

将以下代码添加到您的 settings.py 中

确保您拥有包含所需文件的 assets 目录。在您的根目录中创建静态和媒体文件夹。

如果您使用的是 DEBUG=True ,那么您无需在主 urls.py 中设置有关静态文件的任何内容。所以你可以排除这些行。它们用于 DEBUG=False

如果设置.DEBUG: urlpatterns = urlpatterns + 静态(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT) urlpatterns = urlpatterns + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

最终运行

python manage.py collectstatic

命令,一切就绪。

【讨论】:

  • 什么也没发生
  • 你能在 settings.py 中检查你的调试值吗?是否设置为 True?
  • 哦。我刚刚注意到您在 urls.py 中有两个 /admin 网址。如果您想使用 django admin,请删除最后一个
  • DEBUG = True,这是在 django 设置中设置的。
  • 从管理员网址中删除也没有任何变化
猜你喜欢
  • 1970-01-01
  • 2021-07-22
  • 2022-01-07
  • 2018-03-23
  • 1970-01-01
  • 2011-12-13
  • 2020-09-11
  • 2019-12-30
  • 1970-01-01
相关资源
最近更新 更多