【问题标题】:Serve static files with Django both from CDN and local directories使用 Django 从 CDN 和本地目录提供静态文件
【发布时间】:2014-10-27 11:34:51
【问题描述】:

是否可以同时从 CDN 和本地目录提供静态文件? 目前 STATIC_URL 指向一个 CDN。我还配置了 STATICFILES_DIR 以提供来自本地目录的文件。 django.contrib.staticfiles 也在 INSTALLED_APPS 中。但是,如果我说:

"{% static "img/some_image.png" %}"

在我的模板中,Django 尝试从 CDN 下载文件,并且从不尝试在本地搜索它。有没有办法可以从这两个位置提供服务?

【问题讨论】:

    标签: django python-2.7


    【解决方案1】:

    不,它不能。它将始终从 STATIC_URL 的值构建 url。

    您可以在settings.py 中添加一个标志,这样如果您在本地主机上运行,​​就可以更改STATIC_URL 变量:

    if DEBUG:
       STATIC_URL = '/static/'
    

    同样,在您的urls.py 中,您也可以添加此检查:

    from django.conf import settings  # add this to the top
    from django.conf.urls.static import static 
    
    urlpatterns = ('',
                   url(r'home/$', ... ),
                   # your other urls here
    )
    if settings.DEBUG:
        urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    

    manual 提供了更多提示,包括在开发期间提供媒体文件(用户上传的文件)的类似代码。

    【讨论】: