在静态、django 中获取文件时出现 404 错误

问题描述 投票:0回答:2

我通过谷歌搜索尝试了几次,但没有成功。我不认为我在做另一个 Jango 项目时是这样的,但我不知道为什么。

url.py

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

from . import views

urlpatterns = [
    path("admin/", admin.site.urls),

    path("", views.HomeView.as_view(), name = 'home'), #to home.html
    path("blog/", include('blog.urls')),
]
# urlpatterns += static(settings.STATIC_URL,document_root=settings.STATIC_ROOT) 

设置.py

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.1/howto/static-files/

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

home.html

<img src="{% static 'assets/img/navbar-logo.svg' %}" alt="..." />

目录

Project-folder
|
|__config
|  |__settings.py
|  |__urls.py
|
|__app
|
|__template
|  |__app
|  |  |__bla.html
|  |__home.html
|
|  #bootstrap
|__static
   |__assets
      |__img
...
python django django-settings
2个回答
3
投票

摘自文档

您的项目可能还会有不与特定应用程序绑定的静态资产。除了在应用程序中使用 static/ 目录之外,您还可以在设置文件中定义目录列表 (STATICFILES_DIRS),Django 还将在其中查找静态文件。

所以,使用字典列表,而且它是

STATICFILES_DIRS
而不是
STATICFILES_DIR
,你错过了
S

试试这个:

STATIC_URL = 'static/'
STATICFILES_DIRS = [
    BASE_DIR / "static"
]

或者这个:

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

确保您已使用

% load static %
加载静态标签。


1
投票

如果您尚未加载静态文件,请在您的 base.html 或 home.html 中尝试此操作:

{% load static %}

<link rel="stylesheet" href="{% static 'css/style.css' %}">
© www.soinside.com 2019 - 2024. All rights reserved.