Django 静态文件相对引用 Amazon S3

0 投票
1 回答
1006 浏览
提问于 2025-04-17 15:18

我正在尝试在亚马逊S3上托管静态文件,并让背景图片显示出来。在我的base.html文件中,以下代码可以很好地找到存放在S3桶里的CSS文件:

<link rel="stylesheet" href="{{ STATIC_URL }}css/stylesheet.css" type="text/css" />

我的问题是,在我的CSS文件中,以下这一行似乎找不到图片:

    background-image: url("{{ STATIC_URL }}img/GreenBackground.jpg") no-repeat center center fixed;

我的亚马逊桶看起来是这样的:

/newdjangoapp
--/admin
--/css
----/stylesheet.css
--/img
----/GreenBackground.jpg

我尝试在img和css目录周围添加一个额外的'static'目录,并在文件路径中更新这个设置,我尝试了以下代码:

    background-image: url("{{ STATIC_URL }}../img/GreenBackground.jpg") no-repeat center center fixed;

甚至还尝试了:

    background-image: url("../img/GreenBackground.jpg") no-repeat center center fixed;

我的静态URL设置如下:

STATIC_URL = 'http://s3.amazonaws.com/' + AWS_STORAGE_BUCKET_NAME +'/'

还有静态目录...

STATIC_ROOT = os.path.join(PROJECT_DIR,'')

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

如果能帮我解决这个问题,我将非常感激!

1 个回答

1

也许你应该用不同的方式来引用它,因为你的 CSS 不认识 {{ STATIC_URL }}。你可以看看你在 Django 的 settings.py 文件里是怎么定义静态文件的(在我的情况下,我是用 "/static/")。然后在 CSS 文件里就按照这个方式来引用。不要用 {{STATIC_URL}},而是用你在 settings.py 文件里定义的方式(在我的例子中就是 "/static/css...")。

撰写回答