我尝试为我的网站获取静态文件,但是即使其他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' %}">
答案 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)
这里有几件事情要考虑,我不确定哪一件事适用,因为我只是在不了解您情况的情况下进行纯假设工作
BASE_DIR
设置为什么manage.py collectstatic
无论如何,这里是一些信息,希望对您有所帮助。我将分解设置文件与模板文件的关系,并希望这将帮助您调试问题。
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
...。