如何在Django settings.py中为CDN设置STATIC_URL

时间:2018-05-16 17:56:40

标签: django

我想在我的django 2.0.5模板中使用静态文件:

https://my_cloud_front_adress.cloudfront.net/staticfiles/picture_small.jpg

在Heroku上我设置了变量:

STATIC_URL = https://my_cloud_front_adress.cloudfront.net/staticfiles/

模板/ base.html文件

{% load static %}

{# this one is NOT working #}
<img src="{% static 'picture_small.jpg' %}" alt="my test image"/>

{# this one is working #}
<img src="https://my_cloud_front_adress.cloudfront.net/staticfiles/picture_small.jpg" alt="my test image"/>

如何设置STATIC_URL使其在模板中正常工作:

<img src="{% static 'picture_small.jpg' %}" alt="my test image"/>

3 个答案:

答案 0 :(得分:0)

根据django documentation,您需要..,

  1. django.contrib.staticfiles将其添加到INSTALLED_APPS
  2. STATIC_URL = '/static/'添加到您的settings.py(我认为您忘记添加此内容。
  3. 在模板顶部添加{% load static %}
  4. 然后使用<img src="{% static "my_app/example.jpg" %}" alt="My image"/>
  5. 此外,您还需要添加STATICFILES_DIRS
  6. BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    STATIC_URL = '/static/'
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'static'),
    )
    

答案 1 :(得分:0)

您提供的STATIC_URL值将相对于您的应用,因此添加外部网址并不合理。如果您希望文件在本地获取,则应下载它们并将它们本地存储在应用程序中STATICFILES_DIRS中指定的目录中,并按照Django docs中的说明配置静态文件。

否则,您只需通过网址直接访问文件,而不必将其视为项目中的静态文件。

答案 2 :(得分:0)

user3170828答案是正确的,但要添加,您可以尝试django-storages,这将负责将静态文件同步到S3 / Cloudfront和URL。