无法加载静态文件

时间:2019-01-01 12:52:19

标签: python django static

我尝试为我的网站获取静态文件,但是即使其他stackoverflow答案也似乎无济于事。 请对此提供帮助。

settings.py-

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR,'static','static_root')

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

文件存在于: parent_folder>静态> static_dirs> css> cover.css

HTML

<html lang="en">
{% load staticfiles %}
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="Aman Turate">
<title>Aman Turate - Resume</title>
<link rel="stylesheet" href="{% static 'css/cover.css' %}">

2 个答案:

答案 0 :(得分:0)

这对我有用。将您的settings.py更新为此

.........
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
.........

确保静态文件夹位于根目录(即manage.py所在的位置)

答案 1 :(得分:0)

这里有几件事情要考虑,我不确定哪一件事适用,因为我只是在不了解您情况的情况下进行纯假设工作

  1. BASE_DIR设置为什么
  2. 您运行过manage.py collectstatic
  3. 您的服务器设置是什么,或者您正在使用django开发服务器?
  4. 您要链接到实际放置的文件在哪里

无论如何,这里是一些信息,希望对您有所帮助。我将分解设置文件与模板文件的关系,并希望这将帮助您调试问题。

STATIC_URL = '/static/'->此值将附加到您在模板中链接的静态文件中。它是您域名后面的相对网址。因此,{% static 'css/styles.css' %}在加载时将在您的html页面中呈现为/static/css/styles.css

STATIC_ROOT是文件在磁盘上的绝对路径。它告诉django在运行manage.py collectstatic see here for details.

时将从应用程序收集的所有静态文件放在何处

STATICFILES_DIRS告诉django在哪里可以找到项目静态文件。默认情况下,Django将在每个已注册的应用程序中寻找一个static目录,并将文件收集在该目录中,然后放置在您的STATIC_ROOT文件夹中。如果要将静态文件放在项目的其他目录中,并且想让django知道,则可以在此config变量中列出这些路径。

使用您的代码:

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR,'static','static_root')

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

{% static 'css/cover.css' %}转换为/static/css/cover.css,您告诉django收集静态文件的根目录是<your BASE_DIR>/static/static_root,因此在这里您可以看到位置可能不匹配。同样,我不知道您是否运行过collectstatic。您的STATICFILES_DIR只会在<your BASE_DIR>/static/static_root中查找静态文件,然后将其放入<your BASE_DIR>/static/static_root...。